Java
数独
public
class
ShuDu {
/**
存储数字的数组
*/
static
int
[][]
n
=
new
int
[9][9];
/**
生成随机数字的源数组,随机数字从该数组中产生
*/
static
int
[]
num
= {1,2,3,4,5,6,7,8,9};
public
static
void
main(String[] args) {
//
生成数字
for
(
int
i = 0;i
//
尝试填充的数字次数
int
time = 0;
//
填充数字
for
(
int
j = 0;j
//
产生数字
n
[i][j] =
generateNum
(time);
//
如果返回值为
0
,则代表卡住,退回处理
//
退回处理的原则是:如果不是第一列,则先倒退到前一列,否则
倒退到前一行的最后一列
if
(
n
[i][j] == 0){
//
不是第一列,则倒退一列
if
(j > 0){
j-=2;
continue
;
}
else
{
//
是第一列,则倒退到上一行的最后一列
i--;
j = 8;
continue
;
}
}
//
填充成功
if
(
isCorret
(i,j)){
//
初始化
time
,为下一次填充做准备
time = 0;
}
else
{
//
继续填充
//
次数增加
1
time++;
//
继续填充当前格
j--;
}
}
}
//
输出结果
for
(
int
i = 0;i
for
(
int
j = 0;j
System.
out
.print(
n
[i][j] +
" "
);
}
System.
out
.println();
}
}
/**
*
是否满足行、列和
3X3
区域不重复的要求
*
@param
row
行号