您的位置:首页 > 其它

钱币兑换问题 HDU 1284

2015-03-28 19:44 211 查看
钱币兑换问题

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 6538 Accepted Submission(s): 3780

Problem Description

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

Input

每行只有一个正整数N,N小于32768。

Output

对应每个输入,输出兑换方法数。

Sample Input

2934

12553

Sample Output

718831

13137761

1,先确定3分硬币的最大值,然后求出每一种3分硬币取的值时二分硬币能取的最大值,即此时取二分硬币的种数为2分币的最大值加一(二分币可以取零)。将所有二分币此时的总数累加即得最终值。(将题目转换为根据3分币的取值情况求二分币的情况总数)

2,网上看别人的代码据说这是一个完全背包问题,好吧,现在水平不够,还看不太懂,有兴趣的同学可以看看。

#include<iostream>
#include<cstring>
#include<math.h>
#include <stdio.h>

using namespace std;

int main()
{
int one,two,three;
int N,flag = 0;

while(~scanf("%d",&N))
{
flag =0 ;
three = N /3;
for(int i = 0; i <= three; i++)
{
two = (N - (i * 3))/2;
flag += (two+1);
}
if(N) cout << flag  <<endl;
else cout << "0" << endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: