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
- 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.