c语言函数回溯 c语言函数如何返回值( 四 )


for(int i=0;i9;i++)
{
for(int j=0;j9;j++)
{
printf("%d ",a[i][j]);
if((j==2)||(j==5))
printf(" ");
}
printf("\n");
if((i==2)||(i==5))
printf("\n");
}
printf("\n");
}
//判断否第i行、第j列数设k
bool check(int a[9][9],int i,int j,int k)
{
int m,n;
//判断行
for(n=0;n9;n++)
{
if(a[i][n] == k)
return false;
}
//判断列
for(m=0;m9;m++)
{
if(a[m][j] == k)
return false;
}
//判断所九宫格
int t1=(i/3)*3,t2=(j/3)*3;
for(m=t1;mt1+3;m++)
{
for(n=t2;nt2+3;n++)
{
if(a[m][n] == k)
return false;
}
}
//行返true
return true;
}
//数独求解函数
void Sudoku(int a[9][9],int n)
{
int temp[9][9];
int i,j;
for(i=0;i9;i++)
{
for(j=0;j9;j++)
temp[i][j]=a[i][j];
}
i=n/9; j=n%9; //求第n数行数列数
if(a[i][j] != 0) //已经原始数据
{
if(n == 80)//格输行解
print(temp);
else//格求格
Sudoku(temp,n+1);
}
else//没数据
{
for(int k=1;k=9;k++)
{
bool flag=check(temp,i,j,k);
if(flag) //第i行、第j列k
{
temp[i][j]=k; //设k
if(n == 80)
print(temp);
else
Sudoku(temp,n+1);
temp[i][j]=0; //恢复0判断k
}
}
}
}
【c语言函数回溯 c语言函数如何返回值】c语言函数回溯的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言函数如何返回值、c语言函数回溯的信息别忘了在本站进行查找喔 。

推荐阅读