Topic:
Write a program to solve a Sudoku puzzle by filling the empty cells.
Empty cells is indicated by the character ‘.‘
.
Assume that there would be is only one unique solution.
A Sudoku Puzzle ...
Ideas:
recursion, constant temptation.
PackageSudoku; Public classSudokuSolver { Public voidSolvesudoku (Char[] board) {Solve (board); } Private BooleanSolveChar[] board) { intm =-1; intn =-1; for(inti = 0; I < 9; ++i) { for(intj = 0; J < 9; ++j) {if(Board[i][j] = = '. ') {m=i; N=J; Break; } } } if(M = =-1 && n = =-1) { return true; } for(intK = 1; K <= 9; ++k) {Board[m][n]= (Char) (' 0 ' +k); if(Validate (board, M, N) &&solve (board))return true; Board[m][n]= '. '; } return false; } Private BooleanValidateChar[] board,intXinty) { for(inti = 0; I < 9; ++i) {if(I! = y &&board[x][i] = =Board[x][y])return false; if(I! = x && Board[i][y] = =Board[x][y])return false; } intm = X/3; intn = Y/3; for(inti = 3*m; I < 3*m + 3; ++i) { for(intj = 3*n; J < 3*n + 3; ++j) {if(I! = x && J! = y && board[x][y] = =Board[i][j])return false; } } return true; } Public Static voidMain (string[] args) {//TODO auto-generated Method Stub Char[] board = { { ' 5 ', ' 3 ', '. ', '. ', ' 7 ', '. ', '. ', '. ', '. ' }, { ' 6 ', '. ', '. ', ' 1 ', ' 9 ', ' 5 ', '. ', '. ', '. ' }, { '. ', ' 9 ', ' 8 ', '. ', '. ', '. ', '. ', ' 6 ', '. ' }, { ' 8 ', '. ', '. ', '. ', ' 6 ', '. ', '. ', '. ', ' 3 ' }, { ' 4 ', '. ', '. ', ' 8 ', '. ', ' 3 ', '. ', '. ', ' 1 ' }, { ' 7 ', '. ', '. ', '. ', ' 2 ', '. ', '. ', '. ', ' 6 ' }, { '. ', ' 6 ', '. ', '. ', '. ', '. ', ' 2 ', ' 8 ', '. ' }, { '. ', '. ', '. ', ' 4 ', ' 1 ', ' 9 ', '. ', '. ', ' 5 ' }, { '. ', '. ', '. ', '. ', ' 8 ', '. ', '. ', ' 7 ', ' 9 ' } }; SudokuSolver s=NewSudokuSolver (); S.solvesudoku (board); }}
Leetcode-sudoku Solver