Nombre de façons de rendre
Exercice · OCaml (option informatique), chapitre 13 — Programmation dynamique
Énoncé
Écrire nb_facons pieces montant : le nombre de façons (à l'ordre près) de rendre le montant.
Corrigé
let nb_facons pieces montant =
let dp = Array.make (montant + 1) 0 in
dp.(0) <- 1;
List.iter (fun p ->
for s = p to montant do
dp.(s) <- dp.(s) + dp.(s - p)
done
) pieces;
dp.(montant)
On traite les pièces l'une après l'autre (boucle externe sur pieces) pour ne compter chaque combinaison qu'une fois (et non chaque permutation). dp.(0) = 1 : une seule façon de rendre (ne rien donner).
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.