Java 数独问题
import java.util.Scanner;
public class ShuduTest {
public int[][] nums=new int[9][9];
private boolean isFinished=false;
//The construction function of Sudoku
public ShuduTest(){
}
public boolean Check(int n,int i){
//check the feasibility of the row
for (int j=0;j<9;j++){
if (nums[n/9][j]==i) return false;
}
//check the feasibility of the column
for (int j=0;j<9;j++){
if (nums[j][n%9]==i) return false;
}
//check the feasibility of the matrix
for (int j1=n/9/3*3;j1<n/9/3*3+3;j1++)
for (int j2=n%9/3*3;j2<n%9/3*3+3;j2++)
if (nums[j1][j2]==i) return false;
return true;
}
//Compute the items in Sudoku
public int DFS(int n){
if (n>80) {
isFinished=true;
return 0;
}
if (nums[n/9][n%9]!=0) DFS(n+1);
else{ for (int i=1;i<10;i++){
if (Check(n,i)==true){
nums[n/9][n%9]=i;
DFS(n+1);
if(isFinished==true) return 0;
nums[n/9][n%9]=0;
}
}
}
return 0;
}
public void sovleSudoku(){
//solve the sudoku problem
DFS(0);
}
public static void main(String[] args){
ShuduTest sudu=new ShuduTest();
Scanner input=new Scanner(System.in);
System.out.println("Please inpout the Shudu numbers:");
for (int i=0;i<9;i++)
for (int j=0;j<9;j++)
sudu.nums[i][j]=input.nextInt();
sudu.DFS(0);
for (int i=0;i<9;i++)
for (int j=0;j<9;j++)
System.out.println(sudu.nums[i][j]);
}
}
我是新手,这是我编写的一个数独求解测试方法,在运行过程中DFS()出现了很多问题
1,DFS()在运算过程中出现了返回异常情况,我需要递归n=80,但我调试的时候发现没有到80就结束了
2,变量nums在经过DFS()运算后没有变化
3,同样的DFS()函数在C++里面运行就没有问题,可以得到正确解
想请问一下这个问题出在哪里啊?各位牛人给看看
谢谢