algorithmique (école d'ingénieur) · Chapitre 5 · Exercice de TD
La pyramide de nombres
Chemins de valeur optimale · niveau 2
Énoncé
On descend une pyramide de nombres depuis le sommet ; de la case de la ligne , on va sur la case ou de la ligne . On veut un chemin de somme maximum jusqu'à la base.
| 3 | ||||||||
|---|---|---|---|---|---|---|---|---|
| 7 | 4 | |||||||
| 2 | 4 | 6 | ||||||
| 8 | 5 | 9 | 3 | |||||
| 1 | 6 | 2 | 7 | 4 |
- Représenter la pyramide par un tableau « en escalier » (
int[][] Pdont la ligne a cases) et écrire la récurrence de , somme maximum d'un chemin du sommet à . - Programmer le calcul et l'affichage d'un chemin optimal.
- Combien de chemins une pyramide de lignes a-t-elle ?
Corrigé
- La case est atteinte depuis ou , quand ces cases existent ( et ).
Base. .
Hérédité. , : , les termes inexistants omis. -
int[][] M = new int[n][];
M[0] = new int[] {P[0][0]}; // base
for (int l = 1; l < n; l++) { // par lignes croissantes
M[l] = new int[l + 1];
for (int c = 0; c < l + 1; c++) {
int p = Integer.MIN_VALUE;
if (c > 0) p = Math.max(p, M[l - 1][c - 1]); // venir d'en haut à gauche
if (c < l) p = Math.max(p, M[l - 1][c]); // d'en haut à droite
M[l][c] = p + P[l][c];
}
}
[3]
[10, 7]
[12, 14, 13]
[20, 19, 23, 16]
[21, 26, 25, 30, 20]
Somme maximum 30 : 3 + 7 + 4 + 9 + 7
- Chaque pas offre deux choix : chemins, contre cases à calculer.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.