[恢]hdu 2049

2011-12-16 05:06:54

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2049

题意:中文。错排+组合。

mark:wa了一次。。。忘记写dp的递推。2B了。

代码:

# include <stdio.h>


long long dp[25] = {0, 0, 1} ;
long long c[25][25] ;


void init()
{
int i, j ;
for (i = 3 ; i <= 20 ; i++)
dp[i] = (i-1)*(dp[i-1]+dp[i-2]) ;
for (i = 0 ; i<=20 ; i++)
c[i][0] = 1 ;
for (i = 1 ; i<=20 ; i++)
for(j = 1 ; j <= i ; j++)
c[i][j] = c[i-1][j] + c[i-1][j-1] ;
}


int main ()
{
int T, n, m ;
init() ;
scanf ("%d", &T) ;
while (T--)
{
scanf ("%d%d", &n, &m) ;
printf ("%I64d\n", c[n][m] * dp[m]) ;
}
return 0 ;
}



posted @ 2012-01-06 17:08  Seraph2012  阅读(149)  评论(0编辑  收藏  举报