【背包專題】H - 錢幣兌換問題 hdu1284【完全背包】
阿新 • • 發佈:2017-08-27
tdi 背包 fin 只有一個 input span 正整數 錢幣兌換 n) 在一個國家僅有1分,2分,3分硬幣,將錢N兌換成硬幣有很多種兌法。請你編程序計算出共有多少種兌法。
Input每行只有一個正整數N,N小於32768。Output對應每個輸入,輸出兌換方法數。Sample Input
2934 12553
Sample Output
718831 13137761
思路:完全背包來解決這道題。先遞推出只兌換1分硬幣時的兌換方法有多少種,再遞推出加入2分硬幣後的兌換方法數,最後遞推出加入3分硬幣後的兌換方法數。
#include<stdio.h> #include<string.h> #define N 32769 intdp[N]; int value[3] = {1,2,3}; int main() { int i,j,n; while(scanf("%d",&n)!=EOF) { memset(dp,0,sizeof(dp)); dp[0] = 1; for(i = 0; i < 3; i ++) for(j = value[i]; j <= n; j ++) dp[j] += dp[j-value[i]]; printf("%d\n",dp[n]); } return 0; }
【背包專題】H - 錢幣兌換問題 hdu1284【完全背包】