Aller au contenu

Plus Longue Sous-séquence Commune (LCS)

Programmation dynamique classique

Exercice Avancé · Algorithmique · prepa scientifique et economique (CPGE)

Enonce

Calculer la LCS de deux chaînes. Retourner la sous-séquence elle-même (pas seulement sa longueur).

Exemple : LCS("ABCBDAB", "BDCAB") = "BCAB" (longueur 4).

Signature attendue

def lcs(X: str, Y: str) -> str:

Exemples

  • lcs("ABCBDAB", "BDCAB") → BCAB
  • lcs("AGGTAB", "GXTXAYB") → GTAB
  • len(lcs("ABCBDAB", "BDCAB")) → 4

📖 Rappel de cours

La LCS (Longest Common Subsequence) de deux séquences est la plus longue sous-séquence commune (pas nécessairement contiguë).

Récurrence :

$dp[i][j] = \begin{cases} dp[i-1][j-1]+1 & \text{si } X[i-1]=Y[j-1] \\ \max(dp[i-1][j],\, dp[i][j-1]) & \text{sinon} \end{cases}$

$dp[i][j]$ = longueur de la LCS de $X[0..i-1]$ et $Y[0..j-1]$.

⚠ Le piège : Le tableau a une ligne et une colonne de plus que les longueurs des chaînes : la ligne 0 correspond à la chaîne vide. Décaler les indices est l'erreur qui fait échouer l'exercice. Et pour reconstruire la sous-séquence — et pas seulement sa longueur — il faut remonter le tableau depuis le coin, ce que l'énoncé demande ici.

← Exercices d'algorithmique en Python — tris, dichotomie, récursivité

Exercices du meme theme

  • Algorithme de Boyer-Moore simplifié
  • Algorithme glouton : rendu de monnaie
  • Sac à dos (Programmation Dynamique)
  • Détection de Cycle (Floyd)
  • Arbres Binaires — Parcours et Hauteur
  • Arbre Binaire de Recherche (ABR)

La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Essai gratuit
Testez toutes les fonctionnalités sans engagement
En continuant, vous acceptez notre politique de confidentialité.
Déjà abonné ? Se reconnecter
Recevez un lien de connexion par email
Parcourir gratuitement →
Aperçu limité · sans inscription · sans vérification IA
€4,99
/ mois · accès illimité · résiliable
Paiement sécurisé
En vous abonnant, vous acceptez nos conditions et politique de confidentialité.
Résiliation possible depuis votre espace PayPal.

Chargement...

Initialisation de l'environnement

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Progression
0 / 0
Solo
— / —
Python... SQL...
Recherche
🔬 Bac a sable Python ↗ 🧪 Bac a sable SQL ↗ 📝 Concours blanc ↗ 🏖️ Code à la plage ↗ 📚 Listes de rentrée ↗ 🛠️ Admin ↗
Tu aimes PrepaPython ?
Fais-le savoir !
← Retour à l'accueil Mentions legales & confidentialite