給定要找回的總錢數和硬幣的種類,求出找零所需最少的硬幣數目。
例如:總錢數63,硬幣種類為25、21、10、5、1,求出最小硬幣數
分析:我們可以先假設只有一種硬幣1,
假如總錢數為1,硬幣數就為1,總錢數為2,則硬幣數為2.
則總錢數n,所需的硬幣數就是n個。
以列表形式表示不同總錢數所對應的硬幣數目,即:
coinused = [i for i in range(money + 1)]
依次類推,假如硬幣種類不止一種,我們只需要對比對應總錢數時所需硬幣數的多少就可以了。
**如下:
defcoin_change(values, money, coinused):
"""values:錢幣對應的種類列表
money: 要找回的總錢數
coinused: 對應於錢幣總數money所使用的硬幣數目,以列表形式index對於元素值呈現
"""for cents in range(1,money+1):
for value in
values:
if cents >= value and coinused[cents-value]+1 coinused[cents] = coinused[cents-value]+1
print('
面值為的最小硬幣數為
'.format(cents, coinused[cents]))
list = [1,5,25,21,10]
money = 63coinsused = [i for i in range(money+1)]
coin_change(list, 63,coinsused)
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元,...
錢幣找零問題
錢幣找零問題 這個問題在我們的日常生活中就更加普遍了。假設1元 2元 5元 10元 20元 50元 100元的紙幣分別有c0,c1,c2,c3,c4,c5,c6張。現在要用這些錢來支付k元,至少要用多少張紙幣?用貪心演算法的思想,很顯然,每一步盡可能用面值大的紙幣即可。在日常生活中我們自然而然也是這...