演算法 2找零(最小找零數)

2021-10-03 20:25:10 字數 933 閱讀 9505

問題:給定不同面額的硬幣 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元,...