algorithmique (école d'ingénieur) · Chapitre 5 · Exercice de TD
Un nombre limité de diagonales
Chemins de valeur optimale · niveau 3 (difficile)
Énoncé
Le pas Nord-Est use la batterie du robot : il ne peut en faire qu'au plus .
- On note la valeur maximum d'un chemin de à comportant au plus pas NE. Établir la récurrence.
- Programmer, et donner la valeur maximum sur la grille du chapitre pour . Commenter.
- Quelle est la complexité ?
Corrigé
- On ajoute un paramètre, le nombre de pas NE encore permis.
Base. pour tout .
Hérédité. Pour et :
le dernier terme n'existant que si (et les cases hors grille étant omises). -
for (int l = 0; l < L; l++)
for (int c = 0; c < C; c++)
for (int k = 0; k < K + 1; k++) {
if (l == 0 && c == 0) { M[0][0][k] = G[0][0]; continue; } // base
int p = MOINS_INFINI;
if (l > 0) p = Math.max(p, M[l - 1][c][k]); // pas N
if (c > 0) p = Math.max(p, M[l][c - 1][k]); // pas E
if (l > 0 && c > 0 && k > 0) p = Math.max(p, M[l - 1][c - 1][k - 1]); // pas NE
M[l][c][k] = p + G[l][c];
}
K = 0 : 22
K = 1 : 28
K = 2 : 28
K = 3 : 28
K = 4 : 28
Sans diagonale, le meilleur chemin vaut ; une seule diagonale suffit à retrouver la valeur du chapitre, dont le chemin optimal n'en emploie qu'une.
- cases en temps constant : .
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.