时间:2021-05-20
复制代码 代码如下:
#include<iostream>
using namespace std;
void init();
void function(int m);
int canplace(int row,int col,int c);
void outputresult();
int a[9][9], maxm = 0;
int main()
{
init();
function(0);
return 0;
}
void init()
{
int i, j;
for(i = 0; i < 9; i++)
{
for(j = 0; j < 9; j++)
{
cin >> a[i][j];
}
}
}
void function(int m)
{
int i, j, row, col;
if (m >= 81)
{
outputresult();
}
else
{
row = m / 9;
col = m % 9;
if(a[row][col] != 0)
{
function(m+1);
}
for(i = 1; i <= 9; i++)
{
if(canplace(row,col,i) == 1)
{
a[row][col] = i;
function(m + 1);
a[row][col] = 0;
}
}
}
}
int canplace(int row,int col,int c)
{
int i, j;
int flag = 1;
for(i = 0; i < 9; i++ )
{
if(a[row][i] == c || a[i][col] == c)
{
flag = 0;
break;
}
}
if(flag != 0)
{
for(i = (row / 3) * 3; i < (row / 3) * 3 + 3; i++)
{
for(j = (col / 3) * 3; j < (col / 3) * 3 + 3; j++)
{
if(a[i][j] == c)
{
flag = 0;
break;
}
}
if(flag == 0)
{
break;
}
}
}
return flag;
}
void outputresult()
{
int i, j;
for(i = 0; i < 9; i++)
{
if(i % 3 == 0)
{
cout << endl;
}
for(j = 0; j < 9; j++)
{
if(j % 3 == 0)
{
cout << " ";
}
cout << a[i][j] << " ";
}
cout << endl;
}
cout << endl;
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C/C++实现递归和栈逆序字符串的实例递归函数调用模型逆序方法voidrevers(char*buf){char*p=buf;if(p==NULL){retur
本文实例讲述了C#递归方法实现无限级分类显示效果。分享给大家供大家参考,具体如下:运行效果如下图所示:具体代码如下:C#无限级分类递归显示示例span{floa
本文实例讲述了C++递归线性阵列搜索数字的方法。分享给大家供大家参考。具体如下:这里采用递归方法搜索阵列的数字,发现返回index,未发现范围a-1。复制代码代
本文实例讲述了C++使用递归方法求n阶勒让德多项式的实现方法。分享给大家供大家参考,具体如下:?12345678910111213141516171819202
用C语言写的解数独的程序。在linux下测试成功运行。效果如图:这是带解的数独,需要填写的部分用数字0代替。这是程序运行后的效果图。看看,数独已经搞定啦。程序源