hdu 1284 錢幣兌換問題(母函式)

2021-07-30 08:56:08 字數 945 閱讀 1877

problem description

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

input

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

output

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

sample input

2934

12553

sample output

718831

13137761

什麼是母函式?

假設1分、3分、5分每一種硬幣各一枚,可以得到:

(1+x)*(1+x^3)*(1+x^5)=1+x+x^3+x^4+x^5+x^6+x^8+x^9
展開之後表示可以組成面值為1、3、4、5、6、8、9的方法各一種

如果各兩枚的話,可以得到:

(1+x+x^2)*(1+x^3+x^6)*(1+x^5+x^10)
同理,如果各三枚的話,可以得到:

(1+x+x^2+x^3)*(1+x^3+x^6+x^9)*(1+x^5+x^10+x^15)
因此開兩重迴圈,外面一層遍歷硬幣種數,裡面一層遍歷每種硬幣的個數,用乙個陣列記錄下每種面值的方法數。

#include 

#include

#include

using

namespace

std;

const

int max=32769;

int ans[max],tans[max];

int main()

}while(scanf("%d",&n)!=eof)

printf("%d\n",ans[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 ...