母函数

来源:互联网 发布:mysql创建一个学生表 编辑:程序博客网 时间:2024/06/10 18:26

母函数

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

题意:

硬币值是所有数的平方,1,4,9.......289.这些数,请输入一些数,输出他们所有的组合

输入:

输入多组数,以零结束

输出:

输出这些数的组合总数

输入样例:

2
10
30
0
输出样例:
1427
分析:
我们可以用母函数解决此题(当然也可用动态规划)写出母函数,在编写代码
 
代码:
#include <iostream>using namespace std;#define N 305int a[N],b[N];int main(int argc, char *argv[]){    int n,i,j,k;    while(cin>>n,n)    {         for(i=0;i<=n;i++)        {a[i]=1;b[i]=0;}             for(i=2;i<=17;i++)        {            for(j=0;j<=n;j++)            for(k=0;k+j<=n;k+=i*i)            b[j+k]+=a[j];            for(k=0;k<=n;k++)            {                a[k]=b[k];                b[k]=0;            }        }            cout<<a[n]<<endl;    }    return 0;}