hdu 1398 Square Coins (母函数)

//输入是一个整数。输出他的拆分数(即拆分的方案数),本题与1028最大的不同之处就在于他的面额仅仅能是整数的平方# include <stdio.h>
# include <algorithm>
# include <string.h>
# include <iostream>
using namespace std;
int main()
{
    int n,i,j,k;
    int c1[310],c2[310];
    while(~scanf("%d",&n),n)
    {
         for(i=0;i<=n;i++)
         {
             c1[i]=1;
             c2[i]=0;
         }
         for(i=2;i<=17;i++)///指数系数
         {
             for(j=0;j<=n;j++)
             {
                 for(k=0;k+j<=n;k+=i*i)///关键
                 {
                     c2[k+j]+=c1[j];
                 }
             }
             for(j=0;j<=n;j++)
             {
                 c1[j]=c2[j];
                 c2[j]=0;
             }
         }
         printf("%d\n",c1[n]);
    }
    return 0;
}

posted @ 2017-04-18 16:17  yfceshi  阅读(127)  评论(0编辑  收藏  举报