Jump to content

fechamento


Joelsonc3

Recommended Posts

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...