/ Published in: Java
Expand |
Embed | Plain Text
public class Sudoku { static int[][] board; board = new int[9][9]; for (int i=0;i<9;i++) { for (int j=0;j<9;j++) { } } printBoard(); solveNext(-1,-1); // System.out.println("i="+i+", j="+j); } private static boolean solveNext(int i, int j) { boolean result = false; j = (j+1)%9; i = i+(j==0?1:0); if (i==9) { result = true; printBoard(); } else { if (board[i][j] != 0) { result = solveNext(i,j); } else { for (int val = 1; val <= 9 && !result; ++val) { if (cellValid(i,j, val)) { board[i][j] = val; result = solveNext(i,j); } } board[i][j] = 0; } } return result; } private static boolean cellValid(int i, int j, int val) { for (int r=0;r<9;r++) for (int c=0;c<9;c++) if ((r!=i||c!=j)&& board[r][c]!=0&& board[r][c]==val&& (r==i||c==j||(i/3==r/3&&j/3==c/3))) { return false; } return true; } public static void printBoard() { for (int i=0;i<9;i++) { for (int j=0;j<9;j++) { } } } }
You need to login to post a comment.
