您的位置:首页 > 其它

钱币兑换问题(母函数)

2015-07-28 13:37 288 查看

钱币兑换问题

点我

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7510 Accepted Submission(s):
4437


[align=left]Problem Description[/align]
在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。

[align=left]Input[/align]
每行只有一个正整数N,N小于32768。

[align=left]Output[/align]
对应每个输入,输出兑换方法数。

[align=left]Sample Input[/align]

2934
12553

[align=left]Sample Output[/align]

718831
13137761

#include <iostream>
using namespace std;
#define max 32769
int main()
{
int c1[max+1],c2[max+1];/*c1表示最终结果,c2为计算中的临时数值*/
int i,j,k,n;
for(i=0;i<=max;i++)/*计算第一个括号中的系数值,全部为1*/
{
c1[i]=1;
c2[i]=0;
}
for(i=2;i<=3;i++)/*将第i个括号与第1个括号相乘,从第二个括号开始*/
{
for(j=0;j<=max;j++)/*第一个括号中的表达式*/
{
for(k=0;k+j<=max;k+=i)/*要计算的括号表达式*/
{
c2[j+k]+=c1[j];
}
}
for(j=0;j<=max;j++)    /*刷新结果*/
{
c1[j]=c2[j];
c2[j]=0;
}
}
while(cin>>n)
cout<<c1
<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: