python換硬幣 Python 硬幣兌換問題

2021-10-16 19:27:07 字數 878 閱讀 7043

硬幣兌換問題:

給定總金額為a的一張紙幣,現要兌換成面額分別為a1,a2,....,an的硬幣,且希望所得到的硬幣個數最少。

# 動態規劃思想 dp方程式如下

# dp[0] = 0

# dp[i] = min, 且 其中 i >= coins[j], 0 <= j < coins.length

# 回溯法,輸出可找的硬幣方案

# path[i] 表示經過本次兌換後所剩下的面值,即 i - path[i] 可得到本次兌換的硬幣值。

def changecoins(coins, n):

if n < 0: return none

dp, path = [0] * (n+1), [0] * (n+1) # 初始化

for i in range(1, n+1):

minnum = i # 初始化當前硬幣最優值

for c in coins: # 掃瞄一遍硬幣列表,選擇乙個最優值

if i >= c and minnum > dp[i-c]+1:

minnum, path[i] = dp[i-c]+1, i - c

dp[i] = minnum # 更新當前硬幣最優值

print('最少硬幣數:', dp[-1])

print('可找的硬幣', end=': ')

while path[n] != 0:

print(n-path[n], end=' ')

n = path[n]

print(n, end=' ')

if __name__ == '__main__':

coins, n = [1, 4, 5], 22 # 輸入可換的硬幣種類,總金額n

changecoins(coins, n)

python換硬幣 求助python擲硬幣

該樓層疑似違規已被系統摺疊 隱藏此樓檢視此樓 coin.py import random coin類 包含乙個屬性dictcoin,型別是字典,儲存正反面 包含乙個方法getcoin,獲取本次硬幣是哪一面 class coin dictcoin 1 front 2 back def getcoin ...

Python 第4章 15 換硬幣 20分

將一筆零錢換成5分 2分和1分的硬幣,要求每種硬幣至少有一枚,有幾種不同的換法?輸入在一行中給出待換的零錢數額8。要求按5分 2分和1分硬幣的數量依次從大到小的順序,輸出各種換法。每行輸出一種換法,格式為 fen5 5分硬幣數量,fen2 2分硬幣數量,fen1 1分硬幣數量,total 硬幣總數量...

習題4 5 換硬幣

習題4 5 換硬幣 20 分 將一筆零錢換成5分 2分和1分的硬幣,要求每種硬幣至少有一枚,有幾種不同的換法?輸入在一行中給出待換的零錢數額x 8,100 要求按5分 2分和1分硬幣的數量依次從大到小的順序,輸出各種換法。每行輸出一種換法,格式為 fen5 5分硬幣數量,fen2 2分硬幣數量,fe...