HDU 1398 Square Coins

题目大意:有面值分别为。1,4,9,.......17^2的硬币无数多个。问你组成面值为n的钱的方法数。

最简单的母函数模板题:

#include <cstdio>   

#include <cstring>  

using namespace std;  

int c1[305],c2[305],n;  

int main(){  

    while(scanf("%d",&n),n){  

        for(int i=0;i<=n;i++)c1[i]=1,c2[i]=0;  

        for(int i=2;i<18;i++){  

            for(int j=0;j<=n;j++){  

                for(int k=0;k+j<=n;k+=i*i)c2[j+k]+=c1[j];  

            }  

            memcpy(c1,c2,sizeof c2); memset(c2,0,sizeof c2);  

        }  

        printf("%d\n",c1[n]);  

    }  

}

你可能感兴趣的:(HDU)