Quelles sont les idées derrière les variations du problème du changement de pièce?
-
05-11-2019 - |
Question
Problème: étant donné un ensemble de
n
pièces de valeurs faciales uniques et une valeurchange
, trouver un nombre de façons de changerchange
.
En supposant que nous pouvons utiliser une dénomination plus d'une fois, voici le pseudocode que j'ai trouvé
1. NUM-WAYS(denom[], n, change)
2. dp = [change + 1][n + 1]
3. for i = 0 to n
4 dp[i][0] = 1
5. xs = denom.sorted
6. for i = 1 to change
7. for j = 1 to n
8. if xs[j - 1] > i
9. dp[i][j] = dp[i][j - 1]
10. else
11. dp[i][j] = dp[i - xs[j - 1]][j] + dp[i][j - 1]
12. return dp[change][n]
L'algorithme ci-dessus est clair pour moi. Cependant, si nous ne sommes autorisés à utiliser une dénomination qu'une seule fois, alors la ligne 11 passe à dp[i - xs[j - 1]][j - 1] + dp[i][j - 1]
, comme si nous n'étions pas du tout autorisés à utiliser la dénomination actuelle. Je n'arrête pas à envelopper ma tête. Pouvez-vous expliquer cela?
Voici quelques essais:
Change: 3, denominations: [8, 3, 1, 2]
11111
01111
01222
01233
// use once
Change: 3, denominations: [8, 3, 1, 2]
11111
01111
00111
00122
Change: 4, denominations: [3, 1, 2]
1111
0111
0122
0123
0134
// use once
Change: 4, denominations: [3, 1, 2]
1111
0111
0011
0012
0001
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange