hdu 1398 Square Coins(完全背包变形---求方案总数)

来源:互联网 发布:奥尼尔04总决赛数据 编辑:程序博客网 时间:2024/05/20 05:27

题目分析:有17种硬币 ,币值分别为1^2,2^2.......17^2,  给n代表总钱数,求用这个17种硬币拼成n的种类数

可以用母函数做,也可以用背包做。。。套用的背包,见 背包九讲....


//****背包#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int main(){int n;__int64 dp[1000];while(scanf("%d",&n)&&n!=0){       int a[20];   for(int i=1;i<=17;i++)   a[i]=i*i;   memset(dp,0,sizeof(dp));   dp[0]=1;   for(int i=1;i<=17;i++)   for(int j=a[i];j<=n;j++)   dp[j]=dp[j]+dp[j-a[i]];   printf("%I64d\n",dp[n]);}system("pause");return 0;}