Skip to content

Instantly share code, notes, and snippets.

@binhngoc17
Created November 22, 2014 05:25
Show Gist options
  • Save binhngoc17/3b7884012c348aceb639 to your computer and use it in GitHub Desktop.
Save binhngoc17/3b7884012c348aceb639 to your computer and use it in GitHub Desktop.
Coin Change Dynamic Programming
import sys
import string
import fileinput
import pprint
inputs = fileinput.input()
coins = [int(num) for num in inputs[0].rstrip().split(', ')]
total = int(inputs[1])
# coins = [int(num) for num in numbers[:-1]]
coin_changes = [[0 for i in range(0, total + 1)] for j in range(0, len(coins))]
# pprint.pprint(coin_changes)
for j in range(0, len(coins)):
for i in range(0, total + 1):
if i == 0:
coin_changes[j][i] = 1
elif i - coins[j] >= 0:
coin_changes[j][i] = coin_changes[j][i-coins[j]] + coin_changes[j-1][i]
# elif i - coins[j] == 0:
# coin_changes[j][i] = 1 + coin_changes[j-1][i]
else:
coin_changes[j][i] = coin_changes[j-1][i]
# pprint.pprint(coin_changes)
print coin_changes[j][i]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment