1. 程式人生 > >HDOJ 1398 生成函數

HDOJ 1398 生成函數

for 組成 ems 硬幣 log ast pro () +=

鏈接:

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

題意:

給你17種硬幣,面值分別為1²,2²,3²,4²……

詢問組成n元有多少種方法

代碼:

31 int n;
32 int v[20];
33 int a[310], b[310], last;
34 
35 int main() {
36     rep(i, 0, 18) v[i] = i*i;
37     a[0] = 1;
38     rep(i, 1, 18) {
39         memset(b, 0
, sizeof(b)); 40 for (int j = 0; j*v[i] < 310; j++) 41 for (int k = 0; k + j*v[i] < 310; k++) 42 b[k + j*v[i]] += a[k]; 43 memcpy(a, b, sizeof(b)); 44 } 45 while (cin >> n, n) cout << a[n] << endl; 46 return 0; 47 }

HDOJ 1398 生成函數