Estou tendo um problema de lógica. Tenho a seguinte situação: varias listas, por ex: ListaA 15 posições, ListaB 100 posições, N listas. Necessito gerar todas as combinações possíveis.
ListaA ListaB
Valor A1 ValorB1
Valor A1 ValorB2
Valor A1 ValorB3
…
Tentei utilizando varios laços (for) encadeados, sem sucesso. Gostaria de pedir a ajuda de vcs.
Obs.: O número de listas é dinâmico.
Não entendi o problema.
Como assim o número de listas é dinâmico?
R
renatogrosz
posta o codigo do for encadeado porque é esse o caminho
L
LeonardoU
drsmachado. No exemplo expliquei com as ListaA e ListaB, mas eu posso ter a ListaC, ListaD, e assim por diante.
Sobre o problema, preciso montar as todas as combinações possíveis, isto cada elemento e cada lista.
Olá renatogrosz. Infelizmente não consegui montar o pseudo-código (estrutura) para este problema, este seria meu problema.
Frantic Avenger. Acredito que o seja algo semelhante a isto sim, porém o numero de “for” vai depender do número de listas que tiver, além de que cada lista ter um número diferente de elementos.
Rodrigo_Sasaki
mas você precisa explicar melhor o que quer.
no caso de ter 3 listas, seria listaA[0] + listaB[0] + listaC[0] uma combinação? ou seria algo assim: listaA[0] + listaB[0]
// E depois que foram feitas todas as combinações entre as listas A e B, partimos para uma próxima
listaA[0] + listaC[0] ?
Considerei isso, é porque não quis colocar um input no exemplo.
L
LeonardoU
listaA[0]listab[0]listac[0]listaA[0]listab[0]listac[1]listaA[0]listab[0]listac[2]listaA[0]listab[0]listac[3]listaA[0]listab[0]listac[4]listaA[0]listab[0]listac[5]//acabou a listaClistaA[0]listab[1]listac[0]listaA[0]listab[1]listac[1]listaA[0]listab[1]listac[2]listaA[0]listab[1]listac[3]listaA[0]listab[1]listac[4]listaA[0]listab[1]listac[5]
Desculpe a dificuldade em explicar o problema.
FernandoCartaxo
Quer fazer um produto cartesiano…
guilhermehkr
Até onde entendi, acho que este código resolve o que você precisa:
Esta mal programado, talvez não seja a melhor solução, mas acho que te atende.
publicclassMain{publicstaticvoidmain(String[]args){String[]list1={"1","2","3"};String[]list2={"4","5","6"};String[]list3={"7","8","9"};test(list1,list2,list3);}publicstaticvoidtest(String[]...array){if(array!=null){intlength=array.length;for(intindex=0;index<length;index++){String[]list=array[index];intinitValue=index+1;for(intindexSub=initValue;indexSub<length;indexSub++){String[]listSub=array[indexSub];for(Stringvalue:list){for(StringvalueSub:listSub){// comparar ou fazer o que deseja com os valoresSystem.out.println(value+" "+valueSub);}}}}}}}
L
LeonardoU
Obrigado a todos pelas respostas, acabei limitando o numero de colunas em 5, criando para cada situação (1,2,3, n colunas) estaticamente. Assunto encerrado.