Este artículo describe el método de implementación de números de bucle de salida (matriz de espiral) en Java. Compártelo para su referencia, como sigue:
Lo he visto antes, pero no lo he hecho; Te vi adiós al foro ese día, y llegó la inspiración. Es tan asombroso
La complejidad parece ser o (n)
Guardarlo
Demo de paquete; public class SnakematrixDemo {public static void main (string [] args) {int m = 5;/* row*/int n = 5;/* columna*/int [] [] pos = new int [m] [n];/* posición*//*** La estructura de posición es la siguiente: [0] [0], [0] [1], [0] [1], [0] [2], [0] [3], [0] [4] [4] [1] [1] [0], [1] [1] [3] [0], [3] [1], [3] [2], [3] [3] [4] * * [4] [0], [4] [1], [4] [2], [4] [3], [4] [4] */ int Count = 0; int r = 0, c = 0;/* r: subíndice de línea c: columna subscript pos [r] [c] corresponde a las posiciones anteriores*//* asignar la dirección, primero c ++, luego hacia abajo r ++, luego izquierda c--, luego arriba r--*/ final int up = 1; final int down = -1; Final int izquierdo = 2; final int right = -2; int dir = right;/* Start Direction*/ int Cir = 1;/* cuántas rondas de asignación*/ while (count <m* n) {count ++; pos [r] [c] = count;/* asignación*/ switch (dir) {caso derecho: if (c <n - cir) {/* Todavía no hay asignación en el lado derecho de la línea actual*/ c ++; } else {dir = down; r ++; } romper; Case hacia abajo: if (r <m - cir) {/* Todavía no hay una asignación debajo de la columna actual*/ r ++; } else {dir = izquierda; do--; } romper; Caso izquierdo: if (c> cir-1) {/* Todavía no hay asignación en el lado izquierdo de la línea actual*/ c--; } else {dir = up; r--; } romper; Case Up: if (r> cir) {/* No hay asignación en la columna actual*/ r--; } else {Cir ++;/* asignar un círculo*/ dir = right; c ++; } romper; }} System.out.println ("Wulin.com Resultado de la prueba:"); / * Output */ for (int i = 0; i <m; i ++) {for (int j = 0; j <n; j ++) {if (pos [i] [j] <10) {system.out.print (pos [i] [j]+""+""); } else {System.out.print (pos [i] [j] + ""); }} System.out.println (); }}}Resultados de ejecución:
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.