これはPythonの最小限の変更の問題を解決するためのダイナミックプログラミングソリューションですBryce Boeです。私は一般的なelifブロックで何が起こっているのか分かりません。具体的には、この行で[:]は何をしていますか?この行の[:]は何ですか?
table[i] = table[i - coin][:]
これはテーブルメモリストの代わりに辞書で記述できますか?
def solve_coin_change(coins, value):
"""A dynamic solution to the coin change problem"""
table = [None for x in range(value + 1)]
table[0] = []
for i in range(1, value + 1):
for coin in coins:
if coin > i:
continue
elif not table[i] or len(table[i - coin]) + 1 < len(table[i]):
if table[i - coin] != None:
table[i] = table[i - coin][:]
table[i].append(coin)
if table[-1] != None:
print('%d coins: %s' % (len(table[-1]), table[-1]))
else:
print('No solution possible')
coins = [1, 2, 4]
value = 11
solve_coin_change(coins, value)
深いコピーではなく、浅いコピーです。 – chepner
はい、ありがとうございました@chepner –