Este artículo describe el problema de Sudoku implementado por Java basado en matrices bidimensionales. Compártelo para su referencia, como sigue:
Aquí usamos matrices bidimensionales Java para implementar el problema de Sudoku.
(1) Generar sudoku simple (2) Generar problemas de sudoku **
Código
import java.util.random; import java.util.arrayList; public class Suduku { / ***Imprima una matriz bidimensional, Sudoku matrix* / public static void printArray (int a [] []) {for (int i = 0; i <9; i ++) {para (int j = 0; j <9; j++) {System. +a [i] [j]); Static ArrayList <integer> createNinerondomArray () {ArrayList <integer> list = new ArrayList <Integer> (); list.Add (RandomNum); } System.out.println (); lista de devolución; } /*** Genere una matriz de Sudoku aleatoria a través de una matriz unidimensional y la matriz original** transfiera los datos en la matriz bidimensional, encuentre la posición del valor actual en la matriz unidimensional y asigne la matriz unidimensional* la posición actual más un valor de posición a la matriz bip-dimensional actual. El propósito es utilizar una matriz unidimensional como base e intercambiar estos 9 datos en un orden aleatorio para generar una matriz de Sudoku aleatoria. * */ public static void createSudokuArray (int [] [] SeedArray, ArrayList <Integer> RandomList) {for (int i = 0; i <9; i ++) {for (int j = 0; j <9; j ++) {para (int k = 0; k <9; k ++) if (siedarray [i] [j] == RandomList.) SeedArray [i] [j] = randomList.get ((k+1)%9); romper; }}}} System.out.println ("matriz procesada"); Suduku.printarray (SeedArray); } public static void createSudokuquestion (int [] [] a) {rand rand = new Random (); para (int i = 0; i <9; i ++) {for (int j = 0; j <4; j ++) {a [i] [(int) rand.nextint (9)] = 0; }} Suduku.printarray (a); } // public static void main (string [] args) {int SeedArray [] [] = {{9,7,8,3,1,2,6,4,5}, {3,1,2,6,4,5,9,7,8}, {6,4,5,9,7,8,3,1,2},, {7,8,9,1,2,3,4,5,6,7,8,9}, {1,2,3,4,5,6,7,8,9}, {4,5,6,7,8,9,1,2,3}, {8,9,7,2,3,1,5,6,4}, {2,3,1,5,6,4,8,9,7}, {5,6,4,8,9,7,2,3,1}}; System.out.println ("matriz 2D original:"); Suduku.printarray (SeedArray); ArrayList <Integer> RandomList = Suduku.CreatNinerondomArray (); Suduku.CreatsudokuArray (SeedArray, RandomList); System.out.println ("Genere el problema de sudoku:"); Suduku.CreatSudokuquestion (SeedArray); }}Producción:
9 8 3 1 2 4 5 6 4 8 9 7 5 6 4 8 9 7 2 3 1 5 6 4 8 9 7 2 3 1 5 6 4 8 9 7 5 6 4 8 9 7 2 3 1 5 6 4 8 9 7 5 6 4 8 9 7 2 3 1 5 6 4 8 9 7 2 3 1 5 6 4 8 9 7 5 6 4 8 9 7 2 3 1 5 7 8 2 4 1 5 7 8 2 4 1 5 7 8 2 4 1 5 7 8 2 4 1 5 7 9 6 3 0 0 0 0 0 0 5 7 0 2 4 1 0 7 9 6 0 5 0 1 6 0 9 2 0 0 6 0 9 2 0 0 5 7 0 2 0 0 6 0 9 2 0 0 5 7 0 2 0 0 6 0 9 2 0 0 5 7 0 2 0 0 5 7 0 2 0 0 6 0 9 2 0 0 5 7 0 2 0 0 5 7 0 2 0 0 6 0 9 2 0 0 5 7 0 2 0 0 5 7 0 2 0 0 6 0 0 5 7 0 2 0 0 6 0 0 5 7 0 2 0 0 6 0 0 6 0 9 2 0 0 5 7 0 2 0 0 5 7 0 2 0 0 6 0 0 6 0 9 2 0 0 5 7 0 2 0 0 5 7 0 2 0 0 6 0 0 6 0 9 2 0 0 5 7 0 2 0 0 5 7 0 2 0 0 6 0 0 6 0 9 2 0 0 5 7 0 2 0 0 5 7 0 2 0 0 5 7 0 2 0 0 6 0 7 0 2 0 0 5 7 0 2 0 0 6 0 7 0 2 0 0 5 7 0 2 0 0 6 0 7 0 2 0 0 5 7 0 2 0 8 2 3 0 6 4 8 2 7 0 5 4 8 2 7 0 0 3 9 6
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.