subtree(users/wpcarro): docking briefcase at '24f5a642'
git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
This commit is contained in:
commit
019f8fd211
766 changed files with 175420 additions and 0 deletions
|
|
@ -0,0 +1,56 @@
|
|||
# Given an infinite supply of:
|
||||
# - quarters
|
||||
# - dimes
|
||||
# - nickels
|
||||
# - pennies
|
||||
# Write a function to count the number of ways to make change of n.
|
||||
|
||||
def get(table, row, col):
|
||||
"""
|
||||
Defensively get cell `row`, `col` from `table`.
|
||||
"""
|
||||
if row < 0 or row >= len(table):
|
||||
return 0
|
||||
if col < 0 or col >= len(table[0]):
|
||||
return 0
|
||||
return table[row][col]
|
||||
|
||||
def print_table(table):
|
||||
print('\n'.join([
|
||||
','.join([str(col) for col in table[row]])
|
||||
for row in range(len(table))]))
|
||||
|
||||
def init_table(rows=0, cols=0, default=0):
|
||||
result = []
|
||||
for row in range(rows):
|
||||
r = []
|
||||
for col in range(cols):
|
||||
r.append(default)
|
||||
result.append(r)
|
||||
return result
|
||||
|
||||
def make_change(n):
|
||||
coins = [1, 5, 10, 25]
|
||||
table = init_table(rows=len(coins), cols=n)
|
||||
|
||||
for row in range(len(table)):
|
||||
for col in range(len(table[row])):
|
||||
curr_coin = coins[row]
|
||||
curr_n = col + 1
|
||||
# a
|
||||
a = get(table, row - 1, col)
|
||||
# b
|
||||
b = get(table, row, curr_n - curr_coin - 1)
|
||||
# c
|
||||
c = 1 if curr_coin <= curr_n else 0
|
||||
# commit
|
||||
if curr_coin == curr_n:
|
||||
table[row][col] = a + c
|
||||
else:
|
||||
table[row][col] = a + b * c
|
||||
# debug
|
||||
print_table(table)
|
||||
print()
|
||||
return table[-1][-1]
|
||||
|
||||
print(make_change(7))
|
||||
Loading…
Add table
Add a link
Reference in a new issue