Я искал хорошее решение проблемы Изменение проблемы, и я нашел этот код (Python):
target = 200
coins = [1,2,5,10,20,50,100,200]
ways = [1]+[0]*target
for coin in coins:
for i in range(coin,target+1):
ways[i]+=ways[i-coin]
print(ways[target])
У меня нет проблем с пониманием того, что код буквально делает, но я не могу понять, ПОЧЕМУ он работает. Кто может помочь?