Sudoku Solver
2014-06-26 16:21
260 查看
题目
Write a program to solve a Sudoku puzzle by filling the empty cells.Empty cells are indicated by the character
'.'.
You may assume that there will be only one unique solution.
A sudoku puzzle...
...and its solution numbers marked in red.
方法
典型的回溯法解决数独问题。使用递归来求解。private boolean isValidSudoku(char[][] board, int row, int col) { int len = 9; for (int i = 0; i < len; i++) { if (i != row) { if (board[row][col] == board[i][col]) { return false; } } } for (int j = 0; j < len; j++) { if (j != col) { if (board[row][col] == board[row][j]) { return false; } } } int curRowStart = (row / 3) * 3; int curColStart = (col / 3) * 3; for (int i = curRowStart; i < curRowStart + 3; i++) { for (int j = curColStart; j < curColStart + 3; j++) { if (!(i == row && j == col)) { if (board[i][j] == board[row][col]) { return false; } } } } return true; } private boolean recallSudoku(char[][] board) { int len = 9; for (int i = 0; i < len; i++) { for (int j = 0; j < len; j++) { if (board[i][j] == '.') { for (int k = 0; k < len; k++) { board[i][j] = (char)('1' + k); if (isValidSudoku(board, i, j)) { if (recallSudoku(board)){ return true; } } board[i][j] = '.'; } return false; } } } return true; } public void solveSudoku(char[][] board) { recallSudoku(board); }
相关文章推荐
- LeetCode Online Judge 题目C# 练习 - Sudoku Solver
- 36. Sudoku Solver
- [LeetCode] [数独问题] Sudoku Solver
- [Leetcode] Sudoku Solver
- [LeetCode]Sudoku Solver
- Sudoku Solver
- Sudoku Solver
- Leetcode#37 Sudoku Solver
- Sudoku Solver
- leetcode 日经贴,Cpp code -Sudoku Solver
- Sudoku Solver
- LeetCode 37 Sudoku Solver 回溯和深度遍历 还要学习
- [LeetCode]037-Sudoku Solver
- leetcode 37. Sudoku Solver
- Sudoku Solver
- leetcode--37--Sudoku Solver
- LeetCode: 37. Sudoku Solver
- Sudoku Solver
- leetcode 36. Valid Sudoku 37. Sudoku Solver
- Sudoku Solver