題目連結:
題目意譯:
你被給定一整數陣列 coins 代表著不同的幣值以及一整數 amount 代表著一個金額值。
回傳湊到 amount 這個數值的方法數。如果 amount 無法以任何的硬幣組合被湊出來則回傳 0。
你可以假設每一種硬幣有無限多個。
答案保證可以容納進一個 32 位元有號整數。
限制:
1 ≦ coins.length ≦ 300
1 ≦ coins[i] ≦ 5000
coins 中所有數字皆相異。
0 ≦ amount ≦ 5000
範例測資:
範例 1:
輸入: amount = 5, coins = [1,2,5]
輸出: 4
解釋: 有四種方式可以湊出 amount:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
範例 2:
輸入: amount = 3, coins = [2]
輸出: 0
解釋: 3 這個數值無法只用幣值 2 的硬幣湊出來。
範例 3:
輸入: amount = 10, coins = [10]
輸出: 1
解題思維:
跟昨天的題目類似,也是跟
這題相似。不過因為現在在乎的是「方法數」而不是「最少」,因此其遞迴式將變為M 的方法數 = 「M - P 的方法數」+「M 在引進幣值 P 前的方法數」
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。