Impresión diagonal

No lo hice ayer escrito en diagonal imprimir, colapsar mentalidad y hacerlo de nuevo hoy 
/ ** 
 * @author Eightn0 
 * @Create 2021-03-17 19:03 
 * Función: imprimir matriz alineada diagonalmente de m * n 
 * / 
clase pública PrintNums { 
    public static void main (String [] args) { 
        // Solicitud para ingresar una matriz m * n 
        System.out.println ("Este programa se usa para imprimir la matriz en diagonal, ingrese la longitud de la matriz:") ; 
        Scanner scanner = new Scanner (System.in); 
        int m = scanner.nextInt (); 
        System.out.println ("Por favor ingrese la altura de la matriz:"); 
        int n = scanner.nextInt (); 

        // Genere una matriz bidimensional [m] [n], almacene los datos de entrada 
        System.out.println ("Introduzca los elementos de la matriz:"); 
        int [] [] arr = new int [m] [n]; 
        for ( int i = 0; i <arr.length; i ++) {
            for (int j = 0; j <arr [i] .length; j ++) { 
                arr [i] [j] = scanner.nextInt (); 
            } 
        } 

        // Genera una matriz unidimensional para guardar el resultado 
        int [] resultArr = new int [m * n]; 

        // Observe la ley de salida, cuando el subíndice y el número son pares, mueva la columna +1 a la derecha cuando llegue a la primera fila. Si llega a la última columna, sume 1 a la fila y muévala hacia abajo. 
        // Cuando la suma del subíndice es impar: Si se alcanza la primera columna, la fila se incrementará en 1 para moverse hacia abajo, y si se alcanza la última fila, la columna se incrementará en 1 y se moverá hacia la derecha. 

        int r = 0; 
        int c = 0; 

        for (int i = 0; i <resultArr.length; i ++) { 
            resultArr [i] = arr [r] [c]; 
            if ((r + c)% 2 == 0) { 
                if (c == (n-1)) {// El elemento está en la última columna (la última columna debe juzgarse primero) 
                    r ++; // Bajar 
                } else if (r == 0) {/ / El elemento está en el primer OK, vaya a la derecha 
                    c ++;
                } else {// Otras situaciones 
                    r--; 
                    c ++;
                } 

            } else {// La suma del índice es impar 
                if (r == (m-1)) {// Última línea 
                    c ++; // Ir a la derecha 
                } else if (c == 0) {// Primera columna 
                    r ++; / / Go down 
                } else { 
                    r ++; // línea 
                    c -; // columna 
                } 
            } 
        } 

        // resultado de salida 
        para (Integer integer: resultArr) { 
            System.out.println (integer); 
        } 
    } 
}

Supongo que te gusta

Origin blog.csdn.net/vivian233/article/details/114990054
Recomendado
Clasificación