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



posted @ 2012-01-06 23:31  Seraph2012  阅读(132)  评论(0编辑  收藏  举报