L'escalier et la grille
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 18 — La programmation dynamique
Énoncé
(a) Trouver le nombre de façons différentes de monter un escalier de marches en effectuant des pas de 1 ou 2 marches à chaque fois. Donner la récurrence, l'algorithme itératif et la valeur pour . (b) Déterminer le nombre de chemins possibles pour aller du coin supérieur gauche au coin inférieur droit d'une grille de taille en se déplaçant uniquement vers le bas ou vers la droite. Vérifier sur une grille que l'on retrouve la valeur de .
Corrigé
(a) Pour atteindre la marche , le dernier pas effectué était soit d'une marche (provenant de la marche ), soit de deux marches (provenant de la marche ). Le nombre de chemins vérifie donc la récurrence de Fibonacci : avec et . Par calcul itératif, on obtient . (b) Pour atteindre la case , on ne peut provenir que de la case du dessus ou de la case de gauche . La récurrence est avec pour cas de base (les bords de la grille ne possèdent qu'un unique chemin d'accès rectiligne).
def nb_chemins(p: int, q: int) -> int:
C = [[1] * q for _ in range(p)]
for i in range(1, p):
for j in range(1, q):
C[i][j] = C[i - 1][j] + C[i][j - 1]
return C[p - 1][q - 1]
assert nb_chemins(3, 3) == 6
Note : Mathématiquement, . Ce calcul correspond au triangle de Pascal.
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.