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

来源:互联网 发布:剑三 萝莉捏脸 数据图 编辑:程序博客网 时间:2024/04/28 19:19

钱币兑换问题

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


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

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

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

Sample Input
293412553
 

Sample Output
71883113137761不打表超时ac代码:
#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#define MAXN 44444#define INF 0xfffffff#define max(a,b) a>b?a:b#define min(a,b) a>b?b?ausing namespace std;int dp[MAXN];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]);}}}int main(){int n;db();while(scanf("%d",&n)!=EOF){printf("%d\n",dp[n]);}return 0;}


0 0
原创粉丝点击