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 :
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;}
}
Contrainte :
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.