[恢]hdu 1398

2011-12-16 07:23:13

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

题意:有1、4、9、16.。。289种面额的硬币无数枚(平方数),组成面值为n的方法有多少种。

mark:典型母函数题,不过dp,直接YY出了递推公式,也不难。

代码:

# include <stdio.h>


int dp[20][350] ;
int tab[20] = {0, 1} ;


int init()
{
int i, j ;
for (i = 2 ; i <= 17 ; i++)
tab[i] = i*i ;
for (i = 0 ; i <= 300 ; i++)
dp[1][i] = 1 ;
for (i = 2 ; i<= 17 ; i++)
{
for (j = 0 ;j <= 300 ;j ++)
dp[i][j] = dp[i-1][j] ;
for (j = i*i ; j <= 300 ; j++)
dp[i][j] += dp[i][j-i*i] ;
}
}


int main ()
{
int n ;
init() ;
while (~scanf ("%d", &n) && n)
{
printf ("%d\n", dp[17][n]) ;
}
}



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