Académique Documents
Professionnel Documents
Culture Documents
// Les algorithmes ci-dessous est ne sont qu’une solution proposée par un étudiant, elles
sont peut-être fausses et il existe surement des solutions plus robustes et optimisées.
Exercice 1 :
// Il est demandé de trouver la plus longue sous séquence communes entre deux listes. On
va traiter le cas où les entrées sont des listes chainées (première question), et le cas où les
listes sont des tableaux.
// L’idée générale consiste à mettre en place un algorithme récursif capable de trouver les
éléments en commun entre les deux entrées (les deux listes) et appeler toutes les
comparaisons possibles entre les nombres des deux listes. Enfin, arrivé à la condition d’arrêt,
on dépile les appels récursifs stockés dans la pile, mais en comparant la longueur des sous
listes retournées, pour retourner enfin la plus longue sous liste commune entre les deux
listes.
// Fonction récurrente
ß
// Cas PLSSC entre deux listes chainées
// On écrit une fonction qui compare la longueur entre deux listes chaînées.
// Pour i et j : ¯\_(ツ)_/¯
Début
Si (i = n || j = m) Alors retourner Nil ;
Sinon Si (L1[i] != L2[j]) Alors
Retourner max( PLSCC (L1[i+1], L2[j]), PLSCC (L1[i], L2[j+1])) ;
Sinon
L: Liste;
L ^. Val = L1[i];
L^.suiv = PLSCC (L1[i+1], L2[j+1]);
retourner L;
Fin Si
Fin PLSCC
//Pour que deux nœuds soient cousins, il suffit de vérifier si la hauteur de a est égale à la
hauteur de b, et si le parent de a n’est pas le parent de b
Exercice 3 :
---> https://www.youtube.com/watch?v=aZjYr87r1b8&t=25s
Exercice 4 :
1)
// La solution consiste à faire un parcours en profondeur de l’arbre, à chaque nœud traversé,
on mets à jour la distance en soustrayant la distance parcourue pour arriver au nœud de la
distance n puis on incrémente le compteur (si on n’a pas dépassé la distance n) et en
ajoutant au compteur le retour de l’appel récursif des autres fils du même nœud
// l’idée est de comparer la distance parcourue dans chaque branche (fils du noeud) pour
arriver soit à s ou bien à la fin de l’arbre, on compare les fils l’un à l’autre en retournant la
distance parcourue pour arriver à la ville (s) où bien à la valeur sentinelle (1000)