有5种面值的硬币,即1分,5分,10分,25分,50分。输入一个钱数s,输出组合方案的数量。
s<=250,硬币数量不限。
代码如下:
#include <iostream>
using namespace std;
const int N = 5;
const int Maxm = 251;
int dp[Maxm];int m[] = {1, 5, 10, 25, 50};int main() {dp[0] = 1;for (int i = 0; i < N; i++)for (int j = m[i]; j < Maxm; j++) {dp[j] = dp[j] + dp[j - m[i]];}int n;while (cin >> n) {cout << dp[n] << endl;}return 0;
}