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 (3 códigos)
4.059 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
4.060 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...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s5481