這道題目就需要學習一種思路:
他是要求完全揹包的分配方案數,和原先學習的完全揹包不太一樣。
思想就是每次更改乙個硬幣的面值(當然因此剩餘的錢要相應減少),比如4的話:
可以有3種情況:
1,1,1,1
1,1 , ,2
2 ,, ,2
然後你會發現2的話是:
1,12
4可以看作是只換成1的方案數 加上 2能換成任意面值的方案數 的總和,因為剩餘的兩種方案只是在得到2以後加上一張2面值的硬幣,所以有如下規律:f(n)=f ( n - v[i] )+f( n );即:n的方案數=n已有的方案數+新增一種新的面值的方案數,這裡每次新增的新的面值就乙個,所以f(n- v [i] )是等於f(填乙個新的面值的硬幣)的。
#include
#include
#include
int dp[
50000];
intmain()
}printf
("%d\n"
,dp[n]);
}return0;
}
錢幣兌換問題
problem description 在乙個國家僅有1分,2分,3分硬幣,將錢n兌換成硬幣有很多種兌法。請你程式設計序計算出共有多少種兌法。input 每行只有乙個正整數n,n小於32768。output 對應每個輸入,輸出兌換方法數。sample input 2934 12553 sample ...
錢幣兌換問題
在乙個國家僅有1分,2分,3分硬幣,將錢n兌換成硬幣有很多種兌法。請你程式設計序計算出共有多少種兌法。input 每行只有乙個正整數n,n小於32768。output 對應每個輸入,輸出兌換方法數。sample input 2934 12553sample output 718831 1313776...
錢幣兌換問題
在乙個國家僅有1分,2分,3分硬幣,將錢n兌換成硬幣有很多種兌法。請你程式設計序計算出共有多少種兌法。每行只有乙個正整數n,n小於32768。對應每個輸入,輸出兌換方法數。2934 12553 718831 13137761 參考 正確 include include define ll long ...