钱币兑换
时间限制:1秒 内存限制:32M
题目描述
在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
输入描述
多组输入,每行只有一个正整数N,N小于32768。
输入0表示结束。
输出描述
对应每个输入,输出兑换方法数。
样例
输入
2934
12553
输出
718831
13137761
题目解析:先对所有的情况进行打表处理,再进行输入,之后直接调用a[n]
话不多说,代码如下:
#include<iostream>
using namespace std;
int n,a[35000];
int main() {
a[0]=1;
for(int i=1; i<=3; i++) {
for(int j=i; j<=32768; j++) {
a[j]=max(a[j],a[j]+a[j-i]);
}
}
while(cin>>n&&n) {
cout<<a[n]<<endl;
}
return 0;
}