私はいくつかの動的プログラミングの問題を検討してきましたが、変更するコインの最小数を見つけることに関して、いくつかのコードに頭を悩ませていました。
25、10、および 1 の価値があるコインがあり、30 を変更するとします。貪欲は 25 と 5(1) を返しますが、最適解は 3(10) を返します。この問題に関する本のコードは次のとおりです。
def dpMakeChange(coinValueList,change,minCoins):
for cents in range(change+1):
coinCount = cents
for j in [c for c in coinValueList if c <= cents]:
if minCoins[cents-j] + 1 < coinCount:
coinCount = minCoins[cents-j]+1
minCoins[cents] = coinCount
return minCoins[change]
誰かがこのコードに頭を悩ませるのを手伝ってくれたら (4 行目で混乱し始めます)、それは素晴らしいことです。ありがとう!