Bonjour,
J'ai a réaliser un programme qui à partir d'une chaine A généré aléatoirement va vérifier plusieurs autres listes appelées chaine B (enregistrer dans un fichier que j'envoie par redirection).
Le but est de savoir si les termes de ces deux chaines sont dans le même ordre, dans le désordre ou ne corresponde pas, par exemple :
Si chaine A comporte les termes suivant : 0 1 2 3 4 5
et chaine B comporte les termes suivant : 0 1 2 3 4 5 elles sont en ordre
Si chaine A : 0 1 2 3 4 5
Si chaine B : 1 0 2 3 4 5 elles sont en désordre
Si chaine A: 0 1 2 3 4 5
Si chaine B: 1 2 3 4 5 6 elles sont ni dans l'ordre ni en désordre (elle ne corresponde pas)
J'arrive assez facilement à reconnaitre les différentes chaine à partir du moment qu'elle sont simple, mais si par exemple ma chaine généré aleatoirement comporte des termes en doublé mon algo ne fonctionne plus.
Comment traiter une chaine du type :
chaine A : 0 1 2 3 1 2
chaine B : 1 0 1 0 1 0
Jusqu'a présent je faisais ainsi :
Contrainte :
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 void analyse_in(int Atab[100],int Ltab[100][100],int L,int N) { //Atab : chaine generer aleatoirement //Ltab : tableau contenant les listes int i,j,k; int cp1,cp2; cp1=cp2=0; for (i=0;i<L;i++){ //L correspond à la liste a traiter for (j=0;j<N;j++) //N correspond au nombre de terme dans la chaîne { if(Atab[j]==Ltab[i][j]) //Cp2 => Pour l'ordre cp2++; for (k=0;k<N;k++) //Cp1 => Pour le désordre if (Atab[k]==Ltab[i][j]) cp1++; } analyse_out(Ltab,i,N,cp1,cp2); //Si cp1=N alors "chaîne en désordre" //Si cp2=N alors "chaîne ordonné" cp1=cp2=0;} }
Pas de programmation dynamique, pas d'utilisation de fonctions autre que celle de base (pas de fonction de copie de tableau, verification de tableau etc..)
Merci beaucoup de votre aide.
Partager