您的位置:首页 > 其它

HDOJ 1284 钱币兑换问题(完全背包)

2015-08-27 00:43 295 查看

钱币兑换问题

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

Total Submission(s): 7668 Accepted Submission(s): 4557

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


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


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


Sample Input
2934
12553




Sample Output
718831
13137761




完全背包解法,注意打表,否则超时

代码如下:

<span style="font-size:18px;">#include<cstdio>
#include<algorithm>
using namespace std;
int dp[33000];

void db()
{
	int i,j;
	dp[0]=1;
	for(i=1;i<=3;++i)
	{
		for(j=i;j<=32768;++j)
		  dp[j]=max(dp[j],dp[j-i]+dp[j]);
		  // dp[j]+=dp[j-i];   这样也可以 
	}
}

int main()
{
	db();
	int n;
	while(scanf("%d",&n)!=EOF)
	   printf("%d\n",dp
);
	return 0;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: