algorithmique (école d'ingénieur) · Chapitre 8 · Exercice de TD
Mélange de deux chaînes
Séquences et chaînes de caractères · niveau 3 (difficile)
Énoncé
Une chaîne de longueur est un mélange de et (de longueurs et ) si l'on peut la former en entrelaçant les symboles de et ceux de sans changer leurs ordres respectifs : acbd est un mélange de ab et cd, bacd n'en est pas un.
- On note la vérité de « le -préfixe de est un mélange des - et -préfixes de et ». Donner la base et l'hérédité.
- Écrire
boolean melange(String T, String U, String W). - Pourquoi la stratégie gloutonne « prendre dans dès que c'est possible » échoue-t-elle sur , , ?
Corrigé
- est vrai. Le dernier symbole du préfixe vient soit de (il vaut alors et le reste est un mélange de et ), soit de :
static boolean melange(String T, String U, String W) {
int m = T.length(), n = U.length();
if (W.length() != m + n) return false;
boolean[][] w = new boolean[m + 1][n + 1];
w[0][0] = true; // base
for (int p = 0; p < m + 1; p++)
for (int q = 0; q < n + 1; q++) {
if (p > 0 && w[p - 1][q] && T.charAt(p - 1) == W.charAt(p + q - 1)) w[p][q] = true;
if (q > 0 && w[p][q - 1] && U.charAt(q - 1) == W.charAt(p + q - 1)) w[p][q] = true;
}
return w[m][n];
}
Complexité .
acbd mélange de ab, cd : true
bacd mélange de ab, cd : false
aadbbcbcac mélange de aabcc, dbbca : true
- Le glouton prend successivement dans , , , , , , , les huit premiers symboles
aadbbcbc: il a épuisé , il lui reste à placer face àac, et il échoue sur lea. Pourtant est un mélange (le programme répondtrue) : avec le découpage , les sept premiers choix sont ceux du glouton, mais le huitième symbole, lec, devait venir de . Le choix « ou » quand les deux conviennent ne peut pas se faire localement : la programmation dynamique essaie les deux.
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.