[恢]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 ;
}