USACO Money Systems¶
Problem Statement¶
Tushar Roy video on this version of the Change Problem:¶
In [1]:
# SAMPLE INPUT
#
# 3 10
# 1 2 5
In [2]:
fin = open('money.in', 'r')
fout = open('money.out', 'w')
coins = []
V,N = map(int, fin.readline().split())
print(V,N)
while len(coins) < V:
line = fin.readline().strip()
coins += [int(x.strip()) for x in line.split()]
print(coins)
In [3]:
# Label Columns 0 to N
# Lablel Rows 0 to V
F = [[0]*(N+1) for _ in range(V+1)]
F[0][0] = 1
In [4]:
# Outside loop rows
for v in range(1,V+1):
coin = coins[v-1]
# F(v,n)=F(v-1,n)+F(v,n-coin)
# inside loop columns
for n in range(N+1):
F[v][n] += F[v-1][n]
if n >= coin:
F[v][n] += F[v][n-coin]
for row in F:
print(row)
In [5]:
print(F[V][N])
fout.write(str(F[V][N]) + "\n")
fout.close()