#include<iostream>
#include<algorithm>
#include <ctime>
using
namespace std;
int Initial_State [ 10 ] [ 10 ] ;
bool get_Initial_State( int i , int j ) //搜索第( i , j )位置处可以存储的数字,找到解则返回true,否则返回false
{
if( i >
9
|| j >
9 )
return
true;
for( int k =
1 ; k <=
9 ; ++k )
{
bool can =
true; // can 变量用于记录数字k能否放在 ( i , j ) 处
for( int m =
1 ; m < i ; ++m )
if( Initial_State[m][j] == k ) // 检查同一列是否出现过数字k
{
can =
false ;
break ;
}
if ( can )
for( int n =
1 ; n < j ; ++n )
if( Initial_State[n] == k ) // 检查同一行是否出现过数字k
{
can =
false ;
break;
}
if( can )
{
int up1 = ( i/3 ) *
3
+
3 ; // (i,j)方格所在的3×3小方格i坐标的上限