hdu 1398 Square Coins (母函数)
题意:有 1 2^2 3^2...17^2 十七种硬币 问有多少种方式可以凑够 n
思路:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int c1[400],c2[400];
void fun(int n)
{
int i,j,k;
for(i=0;i<=n;i++)
{
c1[i]=1;
c2[i]=0;
}
for(i=2;i<=17;i++)
{
int add=i*i;
for(j=0;j<=n;j++)
{
for(k=0;k+j<=n;k+=add)
{
c2[j+k]+=c1[j];
}
}
for(j=0;j<=n;j++)
{
c1[j]=c2[j];
c2[j]=0;
}
}
}
int main()
{
int n;
int i,j,k;
fun(300);
while(scanf("%d",&n),n)
{
printf("%d\n",c1[n]);
}
return 0;
}

浙公网安备 33010602011771号