我正在做硬幣更換問題。我已經完成了這個問題,它打印出我需要多少硬幣來儘可能減少變化,但是如何更改我的程序以便它還能打印這些硬幣?Python挑戰
下面是一個簡單的I/O:
input: coin_change(48, [1, 5, 10, 25, 50])
output: [6, [25, 10, 10, 1, 1, 1]]
input: coin_change(48, [1, 7, 24, 42])
output: [2, [24, 24]]
目前我的代碼只返回6
順便說一句,這必須用遞歸僅完成。不允許循環。
代碼:
def change(C, V):
def min_coins(i, aC):
if aC == 0:
return 0
elif i == -1 or aC < 0:
return float('inf')
else:
return min(min_coins(i-1, aC), 1 + min_coins(i, aC-V[i]))
return min_coins(len(V)-1, C)
下面的代碼是什麼,我試過了,但它並沒有第二個輸入
def giveChange(C, V, res = None):
res=[] if res is None else res
if len(V)==0:
return len(res),res
maxx=max(V)
print maxx
V.remove(maxx)
ans=C//maxx
if ans==0 and maxx<C :
print maxx
res +=[maxx]*ans
return len(res),res
else:
res += [maxx]*ans
return giveChange(C % maxx,V,res)
由於這是作業(即使不是),我們首先希望看到您的努力。你有什麼嘗試?什麼工作?什麼沒有?爲什麼? – Eric
增加了我試過的 – user1681664