描述
请编写一个程序,给数独中的剩余的空格填写上数字
空格用字符'.'表示
假设给定的数独只有唯一的解法
题目解法:利用递归回溯的思想进行求解
import java.util.*;
public class Solution {
public void solveSudoku(char[][] board) {
get_ans(board);
}
public boolean get_ans(char[][] board)
{
for(int i=0;i<board.length;i++)
{
for(int j=0;j<board[0].length;j++)
{
if(board[i][j]!='.')
{
continue;
}
for(int k=1;k<10;k++)
{
char c=(char)(k+'0');
if(helper(board,c,i,j))
{
board[i][j]=c;
if(get_ans(board))
{
return true;
}
else
{
board[i][j]='.';
}
}
}
return false;
}
}
return true;
}
public boolean helper(char[][] board,char c,int i,int j)
{
for(int l=i/3*3;l<i/3*3+3;l++)
{
for(int n=j/3*3;n<j/3*3+3;n++)
{
if(board[l][n]==c)
return false;
}
}
for(int l=0;l<board.length;l++)
{
if(board[l][j]==c)
return false;
}
for(int n=0;n<board[0].length;n++)
{
if(board[i][n]==c)
return false;
}
return true;
}
}