2 Star 10 Fork 2

CG国斌 / myleetcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
_37.java 2.21 KB
一键复制 编辑 原始数据 按行查看 历史
Charies Gavin 提交于 2020-02-06 12:44 . 初始化 myleetcode 项目
package com.hit.basmath.learn.recursion_ii;
/**
* 37. Sudoku Solver
* <p>
* Write a program to solve a Sudoku puzzle by filling the empty cells.
* <p>
* A sudoku solution must satisfy all of the following rules:
* <p>
* Each of the digits 1-9 must occur exactly once in each row.
* Each of the digits 1-9 must occur exactly once in each column.
* Each of the the digits 1-9 must occur exactly once in each of the 9 3x3 sub-boxes of the grid.
* Empty cells are indicated by the character '.'.
* <p>
* A sudoku puzzle...
* <p>
* ...and its solution numbers marked in red.
* <p>
* Note:
* <p>
* 1. The given board contain only digits 1-9 and the character '.'.
* 2. You may assume that the given Sudoku puzzle will have a single unique solution.
* 3. The given board size is always 9x9.
*/
public class _37 {
public void solveSudoku(char[][] board) {
if (board == null || board.length == 0)
return;
solve(board);
}
private boolean solve(char[][] board) {
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[0].length; j++) {
if (board[i][j] == '.') {
for (char c = '1'; c <= '9'; c++) {//trial. Try 1 through 9
if (isValid(board, i, j, c)) {
board[i][j] = c; //Put c for this cell
if (solve(board))
return true; //If it's the solution return true
else
board[i][j] = '.'; //Otherwise go back
}
}
return false;
}
}
}
return true;
}
private boolean isValid(char[][] board, int row, int col, char c) {
for (int i = 0; i < 9; i++) {
if (board[i][col] != '.' && board[i][col] == c) return false; //check row
if (board[row][i] != '.' && board[row][i] == c) return false; //check column
if (board[3 * (row / 3) + i / 3][3 * (col / 3) + i % 3] != '.' &&
board[3 * (row / 3) + i / 3][3 * (col / 3) + i % 3] == c) return false; //check 3*3 block
}
return true;
}
}
Java
1
https://gitee.com/guobinhit/myleetcode.git
git@gitee.com:guobinhit/myleetcode.git
guobinhit
myleetcode
myleetcode
master

搜索帮助