|
|
|
|
|
by vardhanw
2655 days ago
|
|
In the first problem illustrated, I wanted to also get the list of coins. I made this attempt, but this hardly seems elegant. Any comments to make it better? n=10
denom = [1,3,4]
dp = [-1 for i in range(n+1)]
dpl = [[] for i in range(n+1)]
def f(n):
if dp[n]!= -1:
return dp[n]
ans = 10**10
if n<=0:
return 0
mini=n
for i in denom:
if (n-i)>=0:
new = f(n-i)+1
if new <= ans:
mini=i
ans = new
dpl[n].append(mini)
if mini!=n:
dpl[n] = [item for sublist in [dpl[n], dpl[n-mini]] for item in sublist]
dp[n]=ans
return ans
if __name__ == "__main__":
ans = f(n)
print(ans, dpl)
|
|