假設我們有一些硬幣的幣值是1元,5元,10元,25元,50元,而我手中有n元,請問n可為幾種硬幣的組成方式。
Ex:n=11
11個1元硬幣=1個1元+2個5元硬幣=6個1元+1個5 元硬幣=1個1元+1個10元硬幣。
所以有4種組成的方式。
輸入值為隨意的n(0<=n<=max),輸出為組成n的方式。 我解這一題的方式是用DP: 令coin[i]為硬幣的幣值,way[i]為i元時,有way[i]種組成的方式,
- for (i=0; i<coin.size(); i++)
- {
- for(j=0;j<way.size();j++)
- way[coin[i]+j] += way[j];
- }