Mlog1:拼湊錢幣--算法

2017-7-10

[1] 題目描述

給你六種面額1、5、10、20、50、100元的紙幣,假設每種幣值的數量都足夠多,編寫程序求組成N元(N為0~10000的非負整數)的不同組合的個數。

輸入描述:

輸入包括一個整數n(1≤n≤10000)

輸出描述:

輸出一個整數,表示不同的組合方案數。

輸入例子:

1

輸出例子:

1

[2] 題目解析

解: 題目解析
[1] 組合是指若兩個子集的元素完全相同并順序相異,它仍視為同一個組合。
[2] 求解取 i 種面額錢幣填充用戶輸入的總額 n 的最大值。
[3] 聯系經典的問題,即背包問題。
由題意可知:

總額 組合方案數 組合
1 1 1張1元
2-4 1-4 1-4 張1元
5 2 5×1元、1×5元
6-9 2 (6-9)×1元、1×5元+(1-3)×1元
10 4 1×10元、2×5元、10×1元、1×5元+5×1元
20 10 1×20元、2×10元、4×5元、20×1元、1×10元+2×5元、1×10元+1×5元+5×1元、1×10元+10×1元、3×5元+5×1元、2×5元+10×1元、1×5元+15×1元

[3] 解題方案

求解 i 種面額錢幣填充用戶輸入的總額 n 的最大值,即dp[j]=dp[j]+dp[j-coin[i]];

2017-7-10

只有我一個人計算過覺得上面的程序是錯的嗎???

2017-7-11

似乎這樣寫更合理一些!!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容