HDU1284 錢幣兌換問題 完全揹包

2021-09-25 12:47:12 字數 826 閱讀 2931

problem description

在乙個國家僅有1分,2分,3分硬幣,將錢n兌換成硬幣有很多種兌法。請你程式設計序計算出共有多少種兌法。

input

每行只有乙個正整數n,n小於32768。

output

對應每個輸入,輸出兌換方法數。

sample input

2934 12553

sample output

718831 13137761

author

smallbeer(cml)

題意:這個題意很簡單的,一看就懂了。

解題:一看感覺就是動態規劃的題,然後想到的狀態轉移方程為  dp[i]=dp[i-1]+dp[i-2]+dp[i-3];感覺也挺對的,但是實際上這個方程是錯誤的,因為你想啊,就是這樣寫的話你算的會有重複的,例如4 可以由 1 1 2 和1 2 1組成,這應該是一種情況,但是卻被你當成了兩種情況,所以我們應該怎麼做呢?

這道題其實理解了就是一道完全揹包的問題,既然按照我們剛才的思路,算出來的結果會有重複的、那我們可以再換一種思路,就是我們可以先都用1去組成這個數字,然後再都用2,在都用3,這樣我們算出來的結果就不會有重複的,這麼一說是不是就是完全揹包了呢,下面給出ac**;

#includeusing namespace std;

int dp[33000];

int main()

int n;

while(~scanf("%d",&n))

return 0;

}

hdu 1284 錢幣兌換

主題思想 這題有兩種主流思路 母函式方法,和動態規劃方法。先說母函式方法,母函式方法,模擬多項式乘法,這裡,有個技巧就是,利用陣列下標表示多項式指數。模擬 1 x x 2 x 3 x 4 1 x 2 x 4 x 6 1 x 3 x 6 x 9 由於是n是有限制的,所以開闢n 1大小的陣列,模擬乘法。...

HDU 1284錢幣兌換

這個是完全揹包的基礎題,模擬換錢,剛開始狀態方程寫錯了,我直接寫dp i dp i 1 dp i 2 dp i 3 然後想了想感覺太大了,不太對,後來看網上的 看著兩層for迴圈,基本是一樣的,為什麼我的不對啊,然後手工模擬了乙個小例子,發現,這種狀態轉移方程算重了,多加了好多重複的,因為完全揹包和...

hdu 1284 錢幣兌換問題

problem description 在乙個國家僅有1分,2分,3分硬幣,將錢n兌換成硬幣有很多種兌法。請你程式設計序計算出共有多少種兌法。input 每行只有乙個正整數n,n小於32768。output 對應每個輸入,輸出兌換方法數。sample input 2934 12553 sample ...