Adloun

Système canonique ?

Exercice de TD · niveau 3 (difficile) · NSI (terminale), chapitre 8 — Les algorithmes gloutons

Énoncé

Système canonique ?

Écrire une fonction qui teste si, pour toutes les sommes de à , le rendu glouton est optimal (c'est-à-dire utilise autant de pièces que la solution par programmation dynamique).

Corrigé

On compare la fonction gloutonne nombre_pieces et la fonction minimum_pieces obtenue par programmation dynamique sur chaque somme.


def est_canonique(systeme, N):
    systeme_desc = sorted(systeme, reverse=True)
    for s in range(1, N + 1):
        if nombre_pieces(systeme_desc, s) != minimum_pieces(systeme, s):
            return False, s   # premier contre-exemple
    return True, None

print(est_canonique([1, 2, 5, 10], 100))   # (True, None)
print(est_canonique([1, 3, 4], 10))        # (False, 6)

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.