钱币兑换问题
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Problem Description
在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
Input
每行只有一个正整数N,N小于32768。
Output
对应每个输入,输出兑换方法数。
Sample Input
2934 12553
Sample Output
71883113137761
思路:完全背包
AC代码:
#include<stdio.h> int main() { int i,j,n; int dp[50000]; while(scanf("%d",&n)!=EOF) { for(i=0;i<=n;i++) dp[i]=1; for(i=2;i<=n;i++) dp[i]=dp[i]+dp[i-2]; for(i=3;i<=n;i++) dp[i]=dp[i]+dp[i-3]; printf("%d\n",dp[n]); } return 0; }