blob: 354e2dfb58b8f7e328f5cbb7f1fa798494597202 (
plain) (
tree)
|
|
def init_table(rows=0, cols=0, default=None):
table = []
for _ in range(rows):
row = []
for _ in range(cols):
row.append(default)
table.append(row)
return table
def print_table(table):
result = ''
for row in range(len(table)):
x = ''
for col in range(len(table[row])):
x += str(table[row][col]) + ' '
result += x + '\n'
print(result)
def get(table, row, col):
if row < 0 or col < 0:
return 0
else:
return table[row][col]
def make_change(coins, amt):
table = init_table(rows=len(coins), cols=amt, default=0)
for row in range(len(table)):
for col in range(len(table[row])):
coin = coins[row]
curr_amt = col + 1
pull_down = get(table, row - 1, col)
if curr_amt < coin:
table[row][col] = pull_down
elif curr_amt == coin:
table[row][col] = pull_down + 1
else:
leftover = get(table, row, curr_amt - coin - 1)
table[row][col] = pull_down + leftover
print_table(table)
return table[-1][-1]
# 1 2 3 4
# 1 1 1 1 1
# 2 1 1 2 2
# 3 1 1 3 4
result = make_change([3,2,1], 4)
print(result)
|