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 :
Je l'ai rapidement implémenté en C et ça n'a pas l'air de renvoyer le bon resultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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
Si vous pouviez m'eclairer un peu car je patauge bien depuis une semaine
Merci pour votre aide
Partager