[恢]hdu 2512

2011-12-31 20:47:45

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

题意:中文。。。

mark:递推。dp[i][j]表示i张卡片分在j本书的种类数,有dp[i][j] = dp[i-1][j-1] + dp[i-1][j]*j。

代码:

# include <stdio.h>


# define MOD 1000


int dp[2010][2010] ;
int ans[2010] = {0, 1} ;


int main ()
{
int T, n ;
int i, j ;
dp[1][1] = 1 ;
for (i = 2 ; i<=2000 ; i++)
{
ans[i] = dp[i][1] = 1 ;
for (j = 2 ; j <= i ; j++)
{
dp[i][j] = (dp[i-1][j]*j + dp[i-1][j-1]) % MOD ;
ans[i] = (ans[i] + dp[i][j]) % MOD ;
}
}
scanf ("%d", &T) ;
while (T--)
{
scanf ("%d", &n) ;
printf ("%d\n", ans[n]) ;
}
return 0 ;
}



posted @ 2012-01-07 00:34  Seraph2012  阅读(135)  评论(0编辑  收藏  举报