LeetCode :Sudoku Solver
2017-05-10 11:10
316 查看
Sudoku Solver
Total Accepted: 13937 TotalSubmissions: 66832My Submissions
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.
public class Solution { public void solveSudoku(char[][] board) { solve(board); } private boolean solve(char[][] board) { for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j ++) { if (board[i][j] =='.') { for (char k = '1'; k <= '9'; k++) { board[i][j] = k; if (isValid(board, i, j) && solve(board)) { return true; } board[i][j] = '.'; } return false; } } } return true; } private boolean isValid(char[][] board,int x, int y ) { boolean [][] square = new boolean[9][9]; for (int i = 0; i < 9; i++) { if (y != i &&board[x][y] == board[x][i]){ return false; } } for (int i = 0; i < 9; i++) { if (x != i &&board[i][y] == board[x][y]){ return false; } } for (int i = (x / 3) * 3; i < (x / 3) * 3 + 3; i++) { for (int j = (y /3) * 3; j < (y / 3) *3 + 3; j++) { if (x != i && y != j && board[i][j] == board[x][y]) { return false; } } } return true; } }这个题目比較有意图。第一次做的时候 是对每个位置生成后的做推断。在ECLIPSE上是过的。可是在OJ上超时了。
之后才想到,并不须要对整个矩阵做推断,仅仅要对更改位置的字进行推断是不是符合要求就能够了!
相关文章推荐
- 【LeetCode】37. Sudoku Solver
- 【leetcode刷题笔记】Sudoku Solver
- 【leetcode】Sudoku Solver
- Leetcode-37-Sudoku Solver(Hard)
- leetcode 36. Valid Sudoku 37. Sudoku Solver
- leetcode 37 Sudoku Solver
- [LeetCode]Sudoku Solver
- [LeetCode 37] Sudoku Solver回溯解法
- [Leetcode] 37. Sudoku Solver
- Leetcode 37. Sudoku Solver
- 【leetcode】Sudoku Solver
- 【LeetCode题意分析&解答】37. Sudoku Solver
- LeetCode 37. Sudoku Solver
- LeetCode:Valid Sudoku,Sudoku Solver(数独游戏)
- Leetcode-Sudoku Solver(数独)
- [LeetCode]37. Sudoku Solver
- LeetCode 37 Sudoku Solver
- LeetCode - Sudoku Solver
- leetcode 37. Sudoku Solver
- leetcode-Sudoku Solver