Adloun

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 le a. Pourtant est un mélange (le programme répond true) : avec le découpage , les sept premiers choix sont ceux du glouton, mais le huitième symbole, le c, 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

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 →