Joelsonc3 Posted July 7, 2020 Share Posted July 7, 2020 Bom dia Pessoal talvez esse assunto já seja muito batido na net, mais eu não achei uma solução, eu estou querendo uma luz. Fechamento para acerto de terno na quina. o objetivo e acertar a logica do fechamento. Combinando 8 dezenas de grupos de 5 é igual 56 volantes, dentro desses 56 volantes a vários ternos repetidos, gostaria de remover esses ternos repetidos. detalhe não se preocupem com gerador ou quantidade para combinar. minha duvida: no código abaixo ele me apresenta a seguinte matriz. onde está o meu erro de logica, pois tem conjunto de três iguais que não encontro no fechamento na matriz abaixo. está na matriz abaixo, tem: 123, 124, 125,134,135,145,234,234,345, 126,127,128,267,267,278,345,346,347,356,357,367. não está na matriz abaixo, não tem: 1 3 6; 1 3 7; 1 3 8; 1 4 6; 1 4 7; 1 4 8; 1 5 6; 1 5 7; 1 5 8; 2 3 6; 2 3 7; 2 3 8; 2 4 5; 2 4 6; 2 4 7; 2 4 8; 2 5 6; 2 5 7; 2 5 8; 2 6 7; 2 6 8; 2 7 8; 3 4 8; 3 5 6; 3 5 7; 3 5 8; 3 6 7; 3 6 8; 3 7 8; 4 5 8; 4 6 7; 4 6 8; 4 7 8; 5 6 8; 5 7 8; 6 7 8; matriz do código: 1 2 3 4 5 1 2 6 7 8 3 4 5 6 7 como a matriz deve ficar: 1 2 3 4 6; 1 2 3 5 8; 1 2 4 7 8; 1 3 6 7 8; 1 4 5 6 7; 2 3 4 5 7; 2 5 6 7 8; 3 4 5 6 8; package br.Exercicio; import java.util.Scanner; public class CombinaReduzido { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int[] vetA = new int[5]; int[][] array = new int[99999][5]; int num = 0, iguais = 0,cont = 0, total = 0; System.out.println("Digite numero Comb:"); num = scan.nextInt(); for (int n1 = 1; n1 <= num; n1++) { vetA[0] = n1; for (int n2 =n1 + 1;n2 <= num; n2++) { vetA[1] = n2; for (int n3 =n2 + 1;n3 <= num; n3++) { vetA[2] = n3; for (int n4 =n3 + 1;n4 <= num; n4++) { vetA[3] = n4; for (int n5 =n4 + 1;n5 <= num; n5++) { vetA[4] = n5; total++; for (int t = 0; t <= cont; t++) { iguais = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (vetA == array[t][j]) { iguais = iguais + 1; } } } if (iguais > 3) { break; } } if (iguais < 3) { cont = cont + 1; for (int x = 0; x < 5; x++) { array[cont][x] = vetA[x]; } System.out.println(" "+vetA[0]+" "+vetA[1]+" "+ vetA[2]+" "+ vetA[3]+" "+vetA[4]); } } } } } } System.out.println("reduzidos:"+ cont); System.out.println("total gerados:"+ total); } } Link to comment Share on other sites More sharing options...
Recommended Posts