题意,有17种硬币,面值为,1(1*1) ,4(2*2)..........289(17*17)
输入n,问n有多少种用硬币的组合方式.
思路:嘛嘛,很水的dp.
#include<iostream>
#include<cstring>
using namespace std;
int a[18],dp[301];
int main()
{
int i,j;
a[0]=0;
for(i=1;i<18;i++)
{
a[i]=i*i;
}
memset(dp,0,sizeof(dp));
dp[0]=1;
for(i=1;i<18;i++)
{
for(j=a[i];j<=300;j++)
{
dp[j]+=dp[j-a[i]];
}
}
int n;
while(cin>>n&&n)
{
cout<<dp[n]<<endl;
}
return 0;
}