[恢]hdu 1284
2011-12-23 09:08:47
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1284
题意:面额为1、2、3的硬币组成n有多少种。
mark:标准母函数,不过用dp搞了。dp[i][j]表示前i种硬币组成面额j的情况数,有dp[i][j] = dp[i-1][j] + dp[i][j-i]。
代码:
# include <stdio.h>
int dp[4][40000] ;
int main ()
{
int i, j, n ;
dp[0][0] = 1 ;
for (i = 1 ; i <= 3 ; i++)
for (j = 0 ; j <= 32768 ; j++)
{
if (j < i) dp[i][j] = dp[i-1][j] ;
else dp[i][j] = dp[i-1][j] + dp[i][j-i] ;
}
while (~scanf ("%d", &n))
printf ("%d\n", dp[3][n]) ;
return 0 ;
}