1. 程式人生 > >【背包專題】H - 錢幣兌換問題 hdu1284【完全背包】

【背包專題】H - 錢幣兌換問題 hdu1284【完全背包】

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
int
dp[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【完全背包】