解应满足的条件是:每一行、每一列、每一个对角线的数字之和都相等。
将输入的三行三列数存入一个二维数组中:
0 1 2
0 0 7 2
1 0 5 0
2 0 3 0
看了参考视频的解法,原来依然可以用枚举。
import java.util.Scanner;
public class sudoku {
static boolean test(String std, String s) {
// TODO Auto-generated method stub
for(int i=0;i<std.length();i++)
{
if(std.charAt(i)==s.charAt(i)) continue;
if(s.charAt(i)=='0') continue;
return false;
}
return false;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
/* Scanner sc=new Scanner(System.in);
int a[][]=new int[3][3];
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
a[i][j]=sc.nextInt();
}
}*/
String s="072050030";
//字符串数组
String[] ss= {
"492357816",
"834159672",
"618753294",
"276951438",
"294753618",
"438951276",
"816357492",
"672195834"
};
for(int i=0;i<ss.length;i++)
{
if(test(ss[i],s))
{
System.out.println(ss[i].substring(0, 2));
System.out.println(ss[i].substring(3, 5));
System.out.println(ss[i].substring(6, 8));
}
}
}
}