Adloun

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
74
246
8593
16274
  • Représenter la pyramide par un tableau « en escalier » (int[][] P dont 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

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 →