問題:給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1。
例 1: coins = [1, 2, 5], amount = 12, result =3 (5 + 5 + 2 = 12)
例 2: coins = [2], amount = 3, result = -1
說明:每種硬幣的數量是無限的。
我寫了兩種解法
1、一看到找零問題,馬上反應用動態規劃,只要知道時間複雜度
1、時間空間都是o(nm)
2、不太清楚,應該是不能用主定理算,最差(上限)大概是o(nm)(想象一下最差的情況,對於每個coin都全部回退),比動態規劃好,空間是o(1)
#include
#include
//借用min
#include
using
namespace std;
//動態規劃
/*int main()
int amount;
cin >> amount;
vector> table;
for (int i = 0; i <= n; i++)
for (int i = 1; i <= n; i++)
}} }
cout << table[n][amount];}*/
//遞迴
intcal
(vector<
int> coins,
int amount)
else}}
intmain()
int amount;
cin >> amount;
cout <<
cal(coins, amount)
;}
動態規劃 最小硬幣找零
用的硬幣面額d1 dn 及其數量,找出有多少種找零方法。最少硬幣找零問題是給出要找零的錢數,以及可用的硬幣面額d1 dn 及其數量,找到所需的最少的硬幣個數。最小硬幣找零 function mincoinchange coins var cache this.makechange function ...
python找零錢程式 Python 找零問題
coding utf 8 def change money money print 總金額 str money 元 loop true tmp 面值列表 單位 元 type 100,50,20,10,5,1,0.5,0.1 sy int money 10 將傳入的金額 10,轉換為 角 單位 whi...
買票找零問題
問題描述 一場激烈足球賽即將開始,售票員緊張地賣票著 每張球票50元,現在有2n 1 n 18 個球迷排隊購票,其中n個手持50元鈔票,另外n個手持100元鈔票。假設開始售票時售票處沒有零錢可以找零。問這2n個人有多少種排隊方式,不至使售票處出現找不出零的局面?例如當n 3時,共6人,3人持50元,...