Adloun

algorithmique (école d'ingénieur) · Chapitre 5 · Exercice de TD

Zébulon, encore

Chemins de valeur optimale · niveau 2

Énoncé

Reprendre le problème de Zébulon (chapitre 1) comme un problème de lignes de bus : les sauts de et de cases sont deux « lignes », et arriver sur la case rapporte .

  • Écrire la récurrence de avec une seule boucle sur la longueur du saut, et mémoriser , case d'où part le dernier saut.
  • Programmer calculerMA et la fonction d'affichage, et les exécuter sur le ruban

Corrigé

  • Un chemin optimal vers arrive depuis ou (s'ils existent et sont accessibles).

Base. .

Hérédité. : , avec ; est la case qui réalise le maximum. La case obtient ainsi sans cas particulier. -


static int[][] calculerMA(int[] R) {
    int n = R.length;
    int[] M = new int[n], A = new int[n];
    M[0] = R[0]; A[0] = -1;                          // base
    for (int j = 1; j < n; j++) {                     // par j croissants
        M[j] = MOINS_INFINI; A[j] = -1;               // aucun chemin connu
        for (int saut = 2; saut <= 3; saut++) {
            int i = j - saut;                         // case de départ du saut
            if (i >= 0 && M[i] > MOINS_INFINI / 2 && M[i] + R[j] > M[j]) {
                M[j] = M[i] + R[j]; A[j] = i;
            }
        }
    }
    return new int[][] {M, A};
}

static void acm(int[] A, int j) {
    if (j == 0) { System.out.print("0"); return; }
    acm(A, A[j]);                                    // chemin jusqu'à a(j) affiché
    System.out.print(" -> " + j);                    // puis la case j
}

M = [2, -oo, 5, 6, 0, 7, 12, 5, 15]
A = [-1, -1, 0, 0, 2, 3, 3, 5, 6]
Valeur maximum 15 : 0 -> 3 -> 6 -> 8

Le chemin optimal vaut .


nom : A
valeurs : -1 -1 0 0 2 3 3 5 6
colorier : 8
vert : 0 3 6
fleches : 8->6 6->3 3->0
legende : a(8) = 6, a(6) = 3, a(3) = 0 : chemin 0 → 3 → 6 → 8

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 →