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]); } }
愿你出走半生,归来仍是少年