Código de Java - Matriz fuerza bruta

sin imagen de perfil

Matriz fuerza brutagráfica de visualizaciones


Java

Publicado el 18 de Agosto del 2019 por anonymous
866 visualizaciones desde el 18 de Agosto del 2019
Presento mi versión en la cual se genera una matriz indicado todas las posibles combinaciones que pueden haber sin repetir ningún valor de cada fila. Puede ser útil para varios problemas, posteriormente mostraré uno de sus útiles usos. Gracias. Espero que sirva.

Requerimientos

Es una clase única ya que incorpora el método main dentro de ella que ejecuta desde el constructor vació la llamada al método motorMatrizFB. Copia tu código y ejecútalo desde consola o cualquier IDE para java.

0.1

Publicado el 18 de Agosto del 2019gráfica de visualizaciones de la versión: 0.1
867 visualizaciones desde el 18 de Agosto del 2019
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

La versión puede mostrar errores al finalizar todas las posibles posibilidades, se irá mejorando en posteriores versiones.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
public class MatrizFuerzaBruta {
    public static void main(String[] args) {
        new MatrizFuerzaBruta();
    }
    public MatrizFuerzaBruta() {
        motorMatrizFB();
    }
    public void motorMatrizFB() {
 
        int columna = 0;
        int fila = 0;
        //Tamaño de la matriz
        int tamanioTablero = 10;
        int[][] mat = new int[tamanioTablero][tamanioTablero+1];
        //Iniciliza la matriz
        mat = posicionInicialUno(mat);
 
        boolean comprobar = false;
 
        //Bucle infinito(futura modificacion)
        while (true) {
            //Muestra el estado de la matriz
            muestraMatriz(mat);
            //Gestiona la primera fila moviendo la "badera" en cada iteracion
            if (fila == 0) {
                columna += 1;
                for (int x = 0; x < columna; x++) {
                    mat[fila][x] = 0;
                }
                mat[fila][columna] = 1;
            }
 
            //Salta de fila si llega al final 
            if (mat[fila][tamanioTablero] == 1) {
                comprobar = true;
                fila += 1;
                for (int i = 0; i < fila; i++) {
                    for (int e = 0; e < mat[i].length; e++) {
                        if (e == 0) {
                            mat[i][e] = 1;
                        } else {
                            mat[i][e] = 0;
                        }
                    }
                }
                //Busca la posicion de la badera, la elimina y la mueve 1 posicion
                int posicion = obtenerPosicion(mat, fila);
                mat[fila][posicion] = 0;
                mat[fila][posicion + 1] = 1;
 
            }
            if (mat[fila][tamanioTablero] == 0 && comprobar == true) {
                comprobar = false;
                fila = 0;
                columna = -1;
 
            }
 
        }
    }
    //Printa el estado de la matriz
    private void muestraMatriz(int[][] mat) {
        for(int i=0;i<mat.length;i++) {
            for(int e = 0;e<mat.length;e++) {
                System.out.print(mat[i][e]);
            }
            System.out.println("");
        }
        System.out.println("\n\n\n");
 
    }
    //Inicializa la primera columna de cada fila con la "bandera"
    private static int[][] posicionInicialUno(int[][] mat) {
        for (int i = 0; i < mat.length; i++) {
            mat[i][0] = 1;
        }
        return mat;
    }
    //Obtiene la posicion donde se encuentra la "bandera" en la fila
    public int obtenerPosicion(int[][] matrizCopia, int fila) {
        int pos = 0;
        for (int i = 0; i < matrizCopia.length; i++) {
            if (matrizCopia[fila][i] == 1) {
                pos = i;
            }
        }
        return pos;
    }
}



Comentarios sobre la versión: 0.1 (0)


No hay comentarios
 

Comentar la versión: 0.1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s5481