LeetCode 37 Sudoku Solver(求解数独)
2017-03-11 14:39
555 查看
题目链接: https://leetcode.com/problems/sudoku-solver/?tab=Description
Problem : 解决数独问题,给出一个二维数组,将这个数独进行求解。
思路:
嵌套循环,三层循环体,每一行,每一列,填入从1到9的数字。判断填入之后是否合理
判断数独是否合理的函数
参考代码:
Problem : 解决数独问题,给出一个二维数组,将这个数独进行求解。
思路:
嵌套循环,三层循环体,每一行,每一列,填入从1到9的数字。判断填入之后是否合理
判断数独是否合理的函数
参考代码:
package leetcode_50; /*** * * @author pengfei_zheng * 求解数独问题 */ public class Solution37 { public static void solveSudoku(char[][] board) { if(board==null ||board.length ==0) return; else solve(board); } private static boolean solve(char[][] board) { for(int i = 0 ; i < 9;i++){ for(int j = 0 ; j < 9;j++){ if(board[i][j]=='.'){ for(char c = '1'; c<='9';c++){ if(isValid(board,i,j,c)){ board[i][j]=c; if(solve(board)) return true; else board[i][j]='.'; } } return false; } } } return true; } private static boolean isValid(char[][] board, int row, int column, char c) { for(int i = 0 ; i < 9; i ++){ if(board[row][i]==c) return false; if(board[i][column]==c) return false; if(board[3 * (row / 3) + i / 3][ 3 * (column / 3) + i % 3] != '.' && board[3 * (row / 3) + i / 3][3 * (column / 3) + i % 3] == c) return false; //check 3*3 block } return true; } public static void main(String[]args){ long start = System.currentTimeMillis(); char[][] board={{'8','.','.','.','.','.','.','.','.'}, {'.','.','3','6','.','.','.','.','.'}, {'.','7','.','.','9','.','2','.','.'}, {'.','5','.','.','.','7','.','.','.'}, {'.','.','.','.','4','.','7','.','.'}, {'.','.','.','1','.','5','.','3','.'}, {'.','.','1','.','.','.','.','6','8'}, {'.','.','8','5','.','.','.','1','.'}, {'.','9','.','.','.','.','4','.','.'} }; solveSudoku(board); long end = System.currentTimeMillis(); for(int i = 0 ; i < 9 ; i ++){ for(int j = 0 ; j < 9 ;j ++){ System.out.print(board[i][j]+" "); } System.out.println(); } System.out.println("耗时: "+ (double)(end-start)/1000+" s"); } }
相关文章推荐
- LeetCode 37 Sudoku Solver(求解数独)(*)
- LeetCode 37. Sudoku Solver(数独Ⅱ)
- [LeetCode] Sudoku Solver 求解数独
- [Leetcode] sudoku solver 求解数独
- [LeetCode 36&37] Valid Sudoku & Sudoku Solver (数独问题)
- LeetCode-37. Sudoku Solver (JAVA)(数独游戏解集)
- Leet Code 37 Sudoku Solver - 求解数独 - Java
- [leetcode-37]Sudoku Solver(java)
- LeetCode 37: Sudoku Solver
- LeetCode 37 SudoKu Solver
- leetcode题解c++ | 37. Sudoku Solver
- LeetCode:Valid Sudoku,Sudoku Solver(数独游戏)
- [LeetCode 37] Sudoku Solver回溯解法
- LeetCode:Valid Sudoku,Sudoku Solver(数独游戏)
- leetcode习题解答:37. Sudoku Solver
- Leetcode (37) Sudoku Solver
- LeetCode 37 Sudoku Solver
- LeetCode:Valid Sudoku,Sudoku Solver(数独游戏)
- leetcode 37. Sudoku Solver
- leetcode - 37.Sudoku Solver