Skip to content

Commit 6aa631f

Browse files
committed
增加另外一个找硬币的方法
1 parent 89c7187 commit 6aa631f

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

change_coin.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,19 @@
5454
# Fen 2 1
5555
# Jiao 2 2
5656
# Yuan 1 3
57-
57+
58+
#解决2(Python)
59+
60+
以下方法,以动态方式,提供最小的硬币数量。避免了贪婪方法的问题。
61+
62+
def coinChange(centsNeeded, coinValues):
63+
minCoins = [[0 for j in range(centsNeeded + 1)] for i in range(len(coinValues))]
64+
minCoins[0] = range(centsNeeded + 1)
65+
66+
for i in range(1,len(coinValues)):
67+
for j in range(0, centsNeeded + 1):
68+
if j < coinValues[i]:
69+
minCoins[i][j] = minCoins[i-1][j]
70+
else:
71+
minCoins[i][j] = min(minCoins[i-1][j], 1 + minCoins[i][j-coinValues[i]])
72+
return minCoins[-1][-1]

change_coin.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,22 @@ def change_coin(money):
3030
money = num_remain
3131
return change
3232

33+
#以下方法,以动态方式,提供最小的硬币数量。避免了贪婪方法的问题。
34+
def coinChange(centsNeeded, coinValues):
35+
minCoins = [[0 for j in range(centsNeeded + 1)] for i in range(len(coinValues))]
36+
minCoins[0] = range(centsNeeded + 1)
37+
38+
for i in range(1,len(coinValues)):
39+
for j in range(0, centsNeeded + 1):
40+
if j < coinValues[i]:
41+
minCoins[i][j] = minCoins[i-1][j]
42+
else:
43+
minCoins[i][j] = min(minCoins[i-1][j], 1 + minCoins[i][j-coinValues[i]])
44+
return minCoins[-1][-1]
45+
3346
if __name__=="__main__":
3447
money = 3.42
48+
coin = [1,2,5,10,20,50,100] #1分,2分,5分,1角,2角,5角,1元
3549
num_coin = change_coin(money)
3650
result = [(key,num_coin[key]) for key in sorted(num_coin.keys())]
3751
print "You have %s RMB"%money
@@ -44,7 +58,8 @@ def change_coin(money):
4458
print "Fen %d %d"%(i[0],i[1])
4559
else:
4660
print "Jiao %d %d"%(i[0]/10,i[1])
47-
61+
num2 = coinChange(5,coin)
62+
print num2
4863
#执行结果
4964
#You have 3.42 RMB
5065
#I had to change you:

0 commit comments

Comments
 (0)