Langage :
C
Date ajout :
15/12/2007
Posté par
coucou747
[
Liste]
DateMAJ :
09/01/2008
Soient deux chaînes de caractères s1 et s2. On appelle battage de s1 et s2 toute chaîne s composée de tous les caractères de s1 et de s2,
telle que l'ordre des caractères de s1 et l'ordre des caractères de s2 ne soit pas modifié dans s, et que les caractères de s1
et les caractères de s2 n'apparaissent qu'une fois dans s.
int battage(const char *s1, const char *s2, const char *s, int strlen1, int strlen2, int strlen3)
{
int i;
if(strlen1==0) {
for(i=0; i<strlen2; i++) {
if(s2[i]!=s[i]) return 0;
}
return 1;
}
if(strlen2==0) {
for(i=0; i<strlen1; i++) {
if(s1[i] != s[i]) return 0;
}
return 1;
}
if(s[0]==s1[0]) {
if(battage(s1+1, s2, s+1, strlen1-1, strlen2, strlen3-1)) return 1;
}
if(s[0]==s2[0]) {
if(battage(s1, s2+1, s+1, strlen1, strlen2-1, strlen3-1)) return 1;
}
return 0;
}
Remarque :
test :
char *s1, *s2, *s;
int l1, l2, l3;
scanf("%d", &l1);
s1 = (char *)malloc(l1 + 1);
scanf("%s", s1);
scanf("%d", &l2);
s2 = (char *)malloc(l2 + 1);
scanf("%s", s2);
scanf("%d", &l3);
s = (char *)malloc(l3 + 1);
scanf("%s", s);
printf("%d\n", battage(s1, s2, s, l1, l2, l3));