Adloun

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

Au plus grands sauts

Glouton ou dynamique ? · niveau 3 (difficile)

Énoncé

Le ressort de Zébulon s'use : il ne peut faire qu'au plus sauts de cases (les sauts de cases sont illimités).

  • Pourquoi la seule valeur ne suffit-elle plus ? Proposer une valeur à deux paramètres et son équation de récurrence.
  • Dans quel ordre calculer les valeurs ? Quelle est la complexité ?
  • Sur le ruban du cours, donner pour et expliquer le résultat pour .

Corrigé

  • Un chemin optimal jusqu'à peut avoir épuisé les grands sauts dont un prolongement aurait besoin : la valeur doit retenir combien il en reste. Soit la valeur maximum d'un chemin de à utilisant au plus sauts de . Base : pour tout . Hérédité : , ,

où un terme est remplacé par lorsque , ou .

  • dépend de valeurs de strictement plus petit : on calcule par croissants (pour chaque , ou par ). Il y a valeurs, chacune en temps constant : .

static int[][] calculerM(int[] R, int Q) { int n = R.length;
    int[][] M = new int[n][Q + 1];
    for (int q = 0; q < Q + 1; q++) {
        M[0][q] = R[0];                                           // base
        for (int j = 1; j < n; j++) {
            int best = MOINS_INFINI;
            if (j >= 2) best = Math.max(best, M[j-2][q]);             // saut de 2
            if (j >= 3 && q >= 1) best = Math.max(best, M[j-3][q-1]); // saut de 3
            M[j][q] = (best <= MOINS_INFINI / 2) ? MOINS_INFINI : best + R[j];
        }
    }
    return M;
}
  • Le programme donne , , . Pour aller de à , la somme des sauts vaut : soit trois sauts de , soit deux sauts de . Avec un seul grand saut autorisé, le chemin est interdit, et il ne reste que .

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 →