Adloun

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

Exercice suivant et tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →