Considérez le problème dans lequel vous avez une valeur de N
et vous devez calculer combien de façons vous pouvez résumer à N
dollars en utilisant [1,2,5,10,20,50,100]
Dollars.Idiome de programmation dynamique pour les combinaisons
la solution DP Tenir compte classique:
C = [1,2,5,10,20,50,100]
def comb(p):
if p==0:
return 1
c = 0
for x in C:
if x <= p:
c += comb(p-x)
return c
Il ne prend pas en effet l'ordre des parties totalisées. Par exemple, comb(4)
donnera 5 résultats: [1,1,1,1],[2,1,1],[1,2,1],[1,1,2],[2,2]
alors qu'il y a actuellement 3 résultats ([2,1,1],[1,2,1],[1,1,2]
sont tous les mêmes).
Quelle est l'idiome DP pour calculer ce problème? ( non élégantes solutions telles que la génération de toutes les solutions possibles et la suppression des doublons ne sont pas les bienvenus)
Y il y a aussi des billets de 2 dollars? Si non, d'où viennent les 2? – Jacob
@Jacob - Correct, merci, j'ai également assumé des factures de 2 $. –