ulysse00
Messages postés291Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention12 mai 2013
-
1 mars 2007 à 12:11
ulysse00
Messages postés291Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention12 mai 2013
-
4 mars 2007 à 12:30
salut mes amis
j'ai un problème que je n'arrive pas a le résoudre
j'ai une liste A={a,b,c}
et j'ai fait la combinaison entre les élements de la lsite A alors j'aurais une liste F{ab,ac,ba,bc,ca,cb} et j'ai supprimer les doublons alors j'aurais {ab,ac,bc} voila la partie qui fait ça
ArrayList F= new ArrayList ();
for (int i=0;i<A.size();i++){
for (int j = i + 1; j < A.size(); j++) {
String Q1=A.get(i).toString();
String Q2=A.get(j).toString();
if ( ! Q1.equals(Q2) ){
String Q3=Q1.concat(Q2);
F.add(Q3);
}
}
}
mais le vrai problème que quand j'ai par exemple {ab,ac,bc,bd,cd}alors je ne sais pas faire la combinaison pour avoir {abc,acb,bcd,bdc} et apres supprimer les doublons alors j'airais une liste F qui contient seulment {abc,bcd}
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 1 mars 2007 à 21:58
Salut:
Une idée: Fais le tri des tes chaines dans un ordre croissant de telle sorte que abc, cba, bac se réduisent tous àprès tri à abc, abc, abc d'où tu as seulement après suppression abc
__________________________________________________________
A.B. : La lumière voyage plus vite que le son. C'est pourquoi certainespersonnes paraissent brillantes jusqu'à ce qu'elles commencent à parler ...
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 3 mars 2007 à 11:59
Salut:
Je ne pense pas que ce que je viens de dire est assez compliqué.
supposons que tu as le chaines {ab, bc, ba}
si tu tries chaque chaine par odre croissant (a < b < ... < z)
tu obtient : {ab, bc, ab}
Puis si tu fais le tri de toutes l'ensemble tu obtiens: {ab, ab, bc}
Enfin tu fais l'unification ce que donne {ab, bc}
C'est comme en fait avec UNIX: sort | uniq
__________________________________________________________
A.B. : La lumière voyage plus vite que le son. C'est pourquoi certainespersonnes paraissent brillantes jusqu'à ce qu'elles commencent à parler ...
ulysse00
Messages postés291Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention12 mai 20131 3 mars 2007 à 12:46
je n'ai pas compris désolé et merci
si j'ai une liste F {ab,ac,bc} alors j'aurais {abc,acb,bcd,bdc}
meme si j'ai une liste avec {abd,acd,abc} apres la combinaison j'aurais {abdc}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 3 mars 2007 à 13:06
Salut:
Désolé, j'ai pas bien compris ta question:
Mais si tu veux générer toutes les combinaisons possibles tu peux utiliser un arbre de choix.
__________________________________________________________
A.B. : La lumière voyage plus vite que le son. C'est pourquoi certainespersonnes paraissent brillantes jusqu'à ce qu'elles commencent à parler ...
ulysse00
Messages postés291Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention12 mai 20131 3 mars 2007 à 13:41
essaie me comprendre mon exemple est clair
{ab,ac,bc,} je voulais avoir comme résultat {abc,acb,bcd,bdc} et pas {abac,abbc,acbc} mais {abc,abc,acb}puis {abc} car je considére les autre doublons
et si j'ai une liste {ab,bc} je ne peux pas faire la combinaison car il faut qu'on trouve a au premier de ab et a en premier bc c'est pour ça je ne peux faire combinaison
meme si j'ai uen lsite avec {abc,abd} j'aurais {abcd} et pas {abcabd}
et si j'ai une lsite {abc,adc} je ne peux pas faire car j'ai ab n'égale pas ad
ulysse00
Messages postés291Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention12 mai 20131 3 mars 2007 à 16:23
je m'avance et je pense que j'ai trouvé la solution mais je coince sur une condition que j'ignore de l'ajouter dans le code par exemple si j'ai une liste {ABC,ABD.BCE,ABF}
essayez me comprendre
car le code que je vais poster seulment une idée générale
j'ai mis comme code
for i = 1 jusqu'à 3 faire
X=T1[i]
for j= i+1 jusqu'à3 faire
Y=T1[j]
je vais séparer Y alors j'aurais une liste T2={A,B,D}
je vais parcourir la liste
while (i<=Té.size()){
if (T2[K] appartient à X)
remove
K++;
sinon K=T2.size();
}
concacténation x avec T2 ( le reste de la liste T2 )
j'ai appliqué ça qu'avec i=1;alors j=2 T1[1]=ABC et T2[2]=ABD
le problème que je n'arrive pas a ajouter la condition si je serais à j=3 T2[3]=BCE
on voit B n'appartient pas à X alors je sote à j égale 4 ainsi de suite jusqu'à la fin de la liste T2
j'espere que vous m'avez bien comprendre mes amis
merci encore de bien vouloir m'aider
ulysse00
Messages postés291Date d'inscriptionlundi 6 novembre 2006StatutMembreDernière intervention12 mai 20131 4 mars 2007 à 12:30
voila le code qu ej'ai fait mais un pb
public static void main(String[] args) {
ArrayList A = new ArrayList();
A.add("a");
A.add("x");
A.add("c");
A.add("h");
A.add("d");
A.add("v");
ArrayList B = new ArrayList();
B.add("ah");
B.add("ac");
B.add("ad");
ArrayList SS = new ArrayList();
ArrayList c = new ArrayList();
ArrayList T = new ArrayList();
for (int i = 0; i < B.size(); i++) {
String Q2 = B.get(i).toString();
for (int j= i+1; j < B.size(); j++) {
String Q1 = B.get(j).toString();
char[] chars = Q1.toCharArray();
StringBuffer buf = new StringBuffer();
int m = chars.length;
for (int E = 0; E < m; E++) {
buf.append(chars[E]); for (int W 0, n buf.length(); W < n; W++) {
if (A.contains(buf.substring(W, buf.length()))) {
c.add(buf.substring(W, buf.length()));
buf = new StringBuffer();
W = n;
}
}
}
}
ArrayList AToDelete = new ArrayList();
int u = 0;
int index;
Iterator ii = c.iterator();
while (ii.hasNext()) {
String x = ii.next().toString();
index = Q2.lastIndexOf(x); //on recherche le dernier index où l'on trouve la chaine 1;
if (index != -1) { // on a trouvé
AToDelete.add(c.get(u));
}
u++;
}
c.removeAll(AToDelete);
Iterator f = c.iterator();
while (f.hasNext()) {
String x = f.next().toString();
String o = Q2.concat(x);
SS.add(o);
}
}
System.out.println(SS);
}
le résultat de la liste SS{[ahc, ahd, acd, acd]} mais normalemnt j'aurais [ahc, ahd, acd]