Problem D. Coin Change
Imagine you got N cents as combination of some coins, and the last added coin was C. Then, number of possible combinations dp[N]
is equal to dp[N-C]
. Consider that you can reach N cents by adding either c[0], c[1], ... ,c[m-1]
cents, so number of possible combinations is:
dp[N] = dp[N-c[0]] + dp[N-c[1]] + ... + dp[N-c[m-1]]
Note that value of N-c[i]
must be non-negative. Let's use tabulation: for values j
from coin
up to N
: update dp[j]
with adding dp[j-coin]
; repeat for each coin
.
12345678910def coinChange(n , coins): dp = [0 for _ in range(n+1)] dp[0] = 1 for i in range(len(coins)): for j in range(coins[i], n+1): dp[j] += dp[j-coins[i]] return dp[n] print(coinChange(14, [1,2,3,7])) print(coinChange(100, [2,3,5,7,11]))
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Riassuma questo capitolo
Explain code
Explain why doesn't solve task
Awesome!
Completion rate improved to 8.33
Problem D. Coin Change
Scorri per mostrare il menu
Imagine you got N cents as combination of some coins, and the last added coin was C. Then, number of possible combinations dp[N]
is equal to dp[N-C]
. Consider that you can reach N cents by adding either c[0], c[1], ... ,c[m-1]
cents, so number of possible combinations is:
dp[N] = dp[N-c[0]] + dp[N-c[1]] + ... + dp[N-c[m-1]]
Note that value of N-c[i]
must be non-negative. Let's use tabulation: for values j
from coin
up to N
: update dp[j]
with adding dp[j-coin]
; repeat for each coin
.
12345678910def coinChange(n , coins): dp = [0 for _ in range(n+1)] dp[0] = 1 for i in range(len(coins)): for j in range(coins[i], n+1): dp[j] += dp[j-coins[i]] return dp[n] print(coinChange(14, [1,2,3,7])) print(coinChange(100, [2,3,5,7,11]))
Grazie per i tuoi commenti!
Awesome!
Completion rate improved to 8.33single