思路:挨个判断当前要填入的数据是否合适,合适就填入
class Solution {
public void solveSudoku(char[][] board) {
write(board);
}
public boolean write(char [][] board){
for (int i=0;i<9;i++){
for (int j=0;j<9;j++){
if (board[i][j]!='.'){
continue;
}
for (char k='1';k<='9';k++){
if (!checkLHB(i,j,board,k)){
continue;
}
board[i][j]=k;
if (write(board)){
return true;
}
board[i][j]='.';
}
return false;
}
}
return true;
}
public boolean checkLHB(int i,int j,char[][] board,char curchar){
for (int m=0;m<9;m++){
if (board[i][m]==curchar){
return false;
}
}
for (int n=0;n<9;n++){
if (board[n][j]==curchar){
return false;
}
}
int x=(i/3)*3;
int y=(j/3)*3;
for (int m=x;m<x+3;m++){
for (int n=y;n<y+3;n++){
if (board[m][n]==curchar){
return false;
}
}
}
return true;
}
}