题海拾贝:P1784 数独

Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!

我的博客: <但凡.

我的专栏: 《编程之路》《数据结构与算法之美》《题海拾贝》《C++修炼之路》

1、题目

2、题解

cpp 复制代码
#include<iostream>
using namespace std;
const int N = 15;
int a[N][N];
bool st1[N][N], st2[N][N], st3[N][N][N];
bool dfs(int i,int j)
{
	if (j == 9)
	{
		i++;
		j = 0;
	}
	
	if (i == 9) return true;
	if (a[i][j]) return dfs(i, j + 1);//如果不等于0说明填过了

	for (int x = 1;x <= 9;x++)
	{
		if (st1[i][x] || st2[j][x] || st3[i / 3][j / 3][x]) continue;
		st1[i][x] = st2[j][x] = st3[i / 3][j / 3][x] = true;

		a[i][j] = x;
		if (dfs(i, j + 1)) return true;
		st1[i][x] = st2[j][x] = st3[i / 3][j / 3][x] = false;
		a[i][j] = 0;
	}
	return false;

}
int main()
{
	for (int i = 0;i <9;i++)
	{
		for (int j = 0;j < 9;j++)
		{
			cin >> a[i][j];
			int x = a[i][j];
			if (x)
			{
				st1[i][x] = st2[j][x] = st3[i/3][j/3][x] = true;
			}
		}
	}
	dfs(0,0);
	for (int i = 0;i < 9;i++)
	{
		for (int j = 0;j < 9;j++)
		{
			cout<< a[i][j]<<" ";
		}
		cout << endl;
	}
	return 0;
}
相关推荐
LYFlied33 分钟前
【每日算法】LeetCode 136. 只出现一次的数字
前端·算法·leetcode·面试·职场和发展
唯唯qwe-1 小时前
Day23:动态规划 | 爬楼梯,不同路径,拆分
算法·leetcode·动态规划
做科研的周师兄1 小时前
中国土壤有机质数据集
人工智能·算法·机器学习·分类·数据挖掘
来深圳1 小时前
leetcode 739. 每日温度
java·算法·leetcode
yaoh.wang2 小时前
力扣(LeetCode) 104: 二叉树的最大深度 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
hetao17338372 小时前
2025-12-21~22 hetao1733837的刷题笔记
c++·笔记·算法
醒过来摸鱼2 小时前
递归三种分类方法
算法
梦帮科技2 小时前
量子计算+AI:下一代智能的终极形态?(第一部分)
人工智能·python·神经网络·深度优先·量子计算·模拟退火算法
炽烈小老头3 小时前
【每天学习一点算法 2025/12/22】将有序数组转换为二叉搜索树
学习·算法
jghhh013 小时前
POCS(凸集投影)算法解决部分k空间数据缺失导致吉布斯伪影
算法