{
if(solve()) //跟层递进.
return true;
else
{
*nullnum[gradation-1]=Null; //若下层返回False,则释放该层,并还原对nullnum的修改.
gradation--;
}
}
}
return false;
}
void main()
{
int i,j; //确定各待求数字的下标与待求数字的地址数组和数量.
for(i=0;i<9;i++)
for(j=0;j<9;j++)
if(shudu[i][j]==Null)
{
nullnum[n_nullnum]=&shudu[i][j];
position_i[n_nullnum]=i;
position_j[n_nullnum]=j;
n_nullnum++;
}
if(solve()) //调用solve方法,若返回值为True则输出,若第初始层为False则此数独无解.
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
cout<<shudu[i][j]<<" ";
cout<<endl;
}
else
cout<<"This has no solve."<<endl;
}
if(solve()) //跟层递进.
return true;
else
{
*nullnum[gradation-1]=Null; //若下层返回False,则释放该层,并还原对nullnum的修改.
gradation--;
}
}
}
return false;
}
void main()
{
int i,j; //确定各待求数字的下标与待求数字的地址数组和数量.
for(i=0;i<9;i++)
for(j=0;j<9;j++)
if(shudu[i][j]==Null)
{
nullnum[n_nullnum]=&shudu[i][j];
position_i[n_nullnum]=i;
position_j[n_nullnum]=j;
n_nullnum++;
}
if(solve()) //调用solve方法,若返回值为True则输出,若第初始层为False则此数独无解.
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
cout<<shudu[i][j]<<" ";
cout<<endl;
}
else
cout<<"This has no solve."<<endl;
}











