NSI (terminale) · Chapitre 7 · Exercice d'entraînement
De combien de façons payer une somme ?
La programmation dynamique · Mémoïsation et approche ascendante · niveau 2
Énoncé
De combien de façons payer une somme ?
On dispose de pièces de valeurs pieces = [1, 2, 5] en quantité illimitée. On veut compter le nombre de façons de payer une somme , l'ordre des pièces ne comptant pas ( et sont la même façon).
- Énumérer à la main les façons de payer .
- On note
w[s]le nombre de façons de payer avec les pièces déjà traitées. Expliquer pourquoi le programme suivant est correct, puis donner le nombre de façons de payer .
def nb_facons(pieces, S):
w = [1] + [0] * S # une seule facon de payer 0 : rien
for p in pieces:
for s in range(p, S + 1):
w[s] = w[s] + w[s - p]
return w[S]
- Que compterait-on si l'on échangeait les deux boucles ?
Un exercice à chercher : son corrigé n'est pas publié. Sur Adloun, le tuteur guide par questions, sans donner la réponse.