题目大意:
现在有面值为1(1的平方),4(2的平方),,,289(17的平方)硬币,给一个数N,问有多少种组合方式可以凑成N
解题思路:
迭代计算即可
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
int i, n;
while(scanf("%d",&n)&&n)
{
int j, f[301]={1};
for(i=1; i<18; i++)
{
for(j=i*i; j<=n; j++)
{
f[j]+=f[j-i*i];
}
}
printf("%d\n",f[n]);
}
return 0;
}