La récursion naïve recalculait les mêmes sous-problèmes : 266 723 739
appels pour rendre 400 centimes avec 8 pièces. Le tableau facons[0..S],
mis à jour pièce par pièce, compte les mêmes combinaisons en S × k
additions (3 200 ici).
Temps (-O2) : 1,17 s → 1,00 s. En -O0 -pg, le surcoût de _mcount
(16,2 s) disparaît avec les appels récursifs. Empreinte inchangée
(ff68d260a7a58441).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le tri à bulles faisait n(n-1)/2 = 450 millions de comparaisons pour
30 000 transactions. qsort trie en O(n log n) avec une fonction de
comparaison (montant, puis id). Les id étant distincts, l'ordre est
total et le résultat identique malgré un tri non stable.
Temps (-O2) : 3,05 s → 1,17 s. Empreinte inchangée (ff68d260a7a58441).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>