Pessoal o assunto pode ser batido na net, mais estou em busca de como construir rodas abreviadas e ter uma melhor compreensão sobre o assunto já que se trata de analise combinatória, gostaria da opinião de vocês, como posso fazer para comparar os dois vectores ou se quiserem usar arrayList ou até map. porque a medida que quantidade de numeros aumenta a complexidade tambem ou não, talvez o problema esteja quantidade bit, seja o problema.
Para fazer uma cobertura para garantir 2 acertos iguais.
Eu procurei algo semelhante na Internet não achei, se tem algum “calculo” para se chegar ao “resumo” ou é lógica, Alguém poderia me da uma explicação.
Se de para usar apenas lista MAT-1, assim já não precisaria criar lista MAT-2.
fiz exemplo simples para melhor compreensão.
qualquer conjunto de 2 está no resumo.
MAT-1 MAT-2 RESUMO
1;2;3 1;2 1 2 3
1;2;4 1;3 1 2 4
1;2;5 1;4 1 2 5
1;3;4 1;5 3 4 5
1;3;5 2;3
1;4;5 2;4
2;3;4 2;5
2;3;5 3;4
2;4;5 3;5
3;4;5 4;5
package matriz;
import java.util.Scanner;
public class Gerar {
public static void gerar(int num){
int total = 0;
int[] vetA = new int[3];
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;
System.out.println(" " + vetA[0] + " " + vetA[1] + " " + vetA[2]);
total++;
}
}
}
System.out.println("TOTAL DE 3: "+ total);
}
public static void cobertura2(int num) {
int total=0;
int[] vetB = new int[2];
for (int n1 = 1; n1 <= num; n1++) {
vetB[0] = n1;
for (int n2 = n1 + 1;n2 <= num; n2++) {
vetB[1] = n2;
System.out.println(" " + vetB[0] + " " + vetB[1]);
total++;
}
}
System.out.println("TOTAL DE 2: "+ total);
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] vetB = new int[3];
int[] vetA = new int[2];
int num = 0;
System.out.println("Digite numero Comb:");
num = scan.nextInt();
gerar(num);
cobertura2(num);
}
}