代码
public class Sudoku{
public static void main(String[] args){
int[][] board=new int[9][9]
Scanner scanner = new Scanner(System.in)
for(int i=0
String line = scanner.nextLine()
for(int j=0
board[i][j]=Integer.parseInt(line.charAt(j)+"")
}
}
solve(0,0,board)
}
private static void solve(int row,int col,int[][] board){
if(row==9){
print(board)
return
}else{
if(board[row][col]==0){
for(int num=1
if(!isExist(row,col,num,board)){
board[row][col]=num
solve(row+(col+1)/9,(col+1)%9,board)
}
board[row][col]=0
}
}else{
solve(row+(col+1)/9,(col+1)%9,board)
}
}
}
public static void print(int[][] board){
for(int i=0
for(int j=0
System.out.print(board[i][j]+" ")
}
System.out.println()
}
}
//判断
private static boolean isExist(int row,int col,int num,int[][] boread){
//同行
for(int c=0
if(board[row][c]==num){
return true
}
}
//同列
for(int r=0
if(board[r][col]==num){
return true
}
}
//3*3
int rowMin = 0
int rowMax = 0
int colMin = 0
int colMax = 0
//约束行
if(row>=0&&row<=2){
rowMin=0
rowMax=2
}
if(row>=3&&row<=5){
rowMin=3
rowMax=5
}
if(row>=6&&row<=8){
rowMin=6
rowMax=8
}
//约束列
if(col>=0&&col<=2){
colMin=0
colMax=2
}
if(col>=3&&col<=5){
colMin=3
colMax=5
}
if(col>=6&&col<=8){
colMin=6
colMax=8
}
for(int r=rowMin
for(int c=colMin
if(board[r][c]==num){
return true
}
}
}
return false
}
}