问题描述:假设某国的硬币的面值有 1、5、10、50 元四种,输入一个金额 N (正整数,N<=1000),印出符合该金额的硬币组合有多少种。
问题分析: 1、5、10 元组合出 N 元的方法数 = 以 1、5 元组合出 N 元的方法数 + 以 1、5、10 元组合出 N - 10 元的方法数(其他类推)
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 10000
int S[]={,,,};
int ways[maxn+];
int main(){ memset(ways,,sizeof(ways));
ways[]=; for (int i=; i<; i++)
for (int j=S[i]; j<=maxn; j++){
ways[j]+=ways[j-S[i]];
} for(int n;cin>>n&&n;)
cout<<ways[n]<<'\n'; return ;
}
04-24 20:44