leetcode 37. 解数独
用深搜dfs,返回值boolean表示找到了。
class Solution {
public void solveSudoku(char[][] board) {
dfs(board);
}
boolean dfs(char[][] board){
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
char ch=board[i][j];
if(ch!='.') continue;
for(char k='1';k<='9';k++){
if(isValid(board,i,j,k)){
board[i][j]=k;
if(dfs(board)) return true;
board[i][j]='.';
}
}
return false;
}
}
return true;
}
boolean isValid(char[][] board,int i,int j,char num){
for(int col=0;col<9;col++){
char ch=board[i][col];
if(ch==num) return false;
}
for(int row=0;row<9;row++){
char ch=board[row][j];
if(ch==num) return false;
}
int m=i/3,n=j/3;
for(int r=m*3;r