题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1284
钱币兑换问题
Problem Description
在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
Input
每行只有一个正整数N,N小于32768。
Output
对应每个输入,输出兑换方法数。
Sample Input
2934 12553
Sample Output
718831 13137761
代码如下:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n,value[4]={0,1,2,3},dp[40000];
while(cin>>n)
{
memset(dp,0,sizeof(dp));
dp[0]=1;
//递推 dp[i][j]表示前i种硬币构造j美分的方法.
for(int i=1;i<=3;i++)
{
for(int j=value[i];j<=n;j++)
{
dp[j]=dp[j]+dp[j-value[i]];
}
}
cout<<dp[n]<<endl;
}
}