为什么我题解发在这里呢?因为洛谷题解满了
上代码吧
---------------------------------------------------------------------------------------------------------------------------------
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a[14][14];
bool check(int x,int y,int z) //检查每一个横行、纵列、宫格中有无重复数字
{
for(int i=1;i<=9;i++) //横行
{
if(a[x][i]==z)
return false;
}
for(int i=1;i<=9;i++) //纵列
{
if(a[i][y]==z)
return false;
}
for(int i=1;i<=3;i++) //宫格
{
for(int j=1;j<=3;j++)
{
if(a[(x-1)/3*3+i][(y-1)/3*3+j]==z)
return false;
}
}
return true;
}
bool dfs(int x,int y) //深搜枚举数字
{
if(y>9) //当一行枚举完后跳到下一行
{
y=1;
x++;
}
if(x>9) //当枚举到9,9位置时结束递归
return true;
if(a[x][y]!=0)
return dfs(x,y+1);
for(int i=1;i<=9;i++)
{
if(check(x,y,i))
{
a[x][y]

本文分享了一道简单的DFS算法题目,用C++解决数独问题。作者指出此题无特殊难度,主要通过深度优先搜索策略完成。
最低0.47元/天 解锁文章
508

被折叠的 条评论
为什么被折叠?



