这一题,简单的母函数的应用,好久没有写过母函数了,有点生疏了。
题目的硬币有17种,分别是1到17的平方的硬币。
下面的是AC的代码:
#include <iostream> #include <cstring> #include <cmath> using namespace std; int dp[305], temp[305]; int main() { int i, j, k, l; for(i = 0; i < 305; i++) //初始化 { dp[i] = 1; temp[i] = 0; } for(j = 2; j <= 17; j++) //硬币的种类 { for(k = 0; k < 301; k++) { for(l = 0; l + k < 301; l += j * j) temp[l + k] += dp[k]; } for(k = 0; k < 301; k++) { dp[k] = temp[k]; temp[k] = 0; } } int m; while(cin >> m && m) cout << dp[m] << endl; return 0; }
时间: 2024-10-03 23:02:18