[Recursif] Recherche sequence, calcul complexité
Bonjour à tous
Je dois ecrire un algo qui recherche la plus grande sequence de 1 dans un tableau à 1 dimension composé uniquement de 1 et de 0.
Pour cela on nous a donné quelques pistes : choisir un pivot (le milieu du tableau). Utiliser deux fonctions : head(T,i,j) qui retourne le plus long sous tableaux préfixe de T[i...j] uniquement composé de 1, et tail(T,i,j) qui retourne le plus long sous tableaux suffixe de T[i...j] uniquement composé de 1.
En m'aidant de ça et de ce que nous a dit la prof..j'ai concocté ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
fonction rechRec(T,i,j) : (p,n) // (position plus grande sequence,longueur)
n <- j - i + 1 // taille tableau
si n = 1 alors
si T[i] = 0 alors retourner (0,0)
sinon retourner (i,1)
finSi
sinon
solutiong <- rechRec(T,i,i+(n/2)-1) // (p,n) de la meilleure solution à gauche
solutiond <- rechRec(T,(n/2)+i,j) // (p,n) de la meilleure solution à droite
si solutiong.n > solutiondroite.n alors maxsol = solutiong
sinon maxsol = solutiond
finSi
g <- tail(T,i,i+(n/2)-1)
d <- head(T,i+(n/2),j)
longueur = g.longueur + d.longueur
si longueur > maxsol alors
si g est vide alors retourner(i+(n/2),longueur);
sinon retourner(i+(n/2) - g.longueur,longueur)
else
retourner (maxsol)
finSi
finSi
finFonction |
Je l'ai rapidement implémenté en C et ça n'a pas l'air de renvoyer le bon resultat :(
Je pense que ça vient de l'algo.. car j'ai suivit un peu sans comprendre ce que nous a dit la prof..
Car je ne vois pas trop comment il peut fonctionner cet algo :aie:
Si vous pouviez m'eclairer un peu car je patauge bien depuis une semaine :?
Merci pour votre aide