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