forked from menault/2026_TD3_DEV51_Qualite_Algo
Optimiser F8 avec un tableau de programmation dynamique
This commit is contained in:
@@ -331,3 +331,20 @@ paires sur les **97 655 tableaux** de longueur 1 à 7 à montants dans
|
||||
`[-2, 2]`, ainsi que sur une entrée vide. Ils vérifient aussi que les
|
||||
transactions d'origine restent inchangées, notamment en présence de
|
||||
doublons et de plusieurs zéros.
|
||||
|
||||
### F8 — Programmation dynamique pour le rendu de monnaie
|
||||
|
||||
`facons[s]` contient le nombre de façons de rendre `s` avec les pièces déjà
|
||||
traitées. Il vaut initialement 1 pour la somme nulle et 0 ailleurs. Pour
|
||||
chaque pièce, les sommes sont parcourues dans l'ordre croissant et l'on
|
||||
ajoute `facons[s - piece]` à `facons[s]`. Ce sens permet la réutilisation
|
||||
d'une pièce ; la boucle des pièces à l'extérieur compte des combinaisons,
|
||||
sans distinguer l'ordre des pièces.
|
||||
|
||||
Chaque état est calculé une seule fois par type de pièce : **`O(S × k)`**
|
||||
pour `k ≥ 1` (et `O(S × k + S)` en incluant l'initialisation si `k = 0`),
|
||||
avec **`O(S)`** de mémoire. La récursion et ses sous-problèmes répétés
|
||||
disparaissent. F8 passe de **M = 4 à M = 5** : l'amélioration temporelle
|
||||
n'implique pas une baisse de M. Les tests comparent les résultats à la
|
||||
récursion initiale pour les sommes de -2 à 40 et de 0 à 8 types de pièces,
|
||||
y compris la somme nulle et l'absence de pièces.
|
||||
|
||||
Reference in New Issue
Block a user