51| 数独

代码实现

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int a[N][N];
bool col[N][N], row[N][N], st[3][3][N];
bool dfs(int x, int y)
{
	// 出口
	if(y == 10)
	{
		x ++;
		y = 1;
	 } 
	if(x == 10) return true;
	if(a[x][y]) return dfs(x, y+1); // 已经填值了 
	for(int i = 1; i <= 9; i++)
	{
		if(row[x][i] || col[y][i] || st[(x-1)/3][(y-1)/3][i]) continue; // 剪枝
		 // 递归搜索
		 row[x][i] = col[y][i] = st[(x-1)/3][(y-1)/3][i] = 1;
		 a[x][y] = i; 
		 if(dfs(x, y+1)) return true; // 已经找到结果 
		 // 回溯 
		 row[x][i] = col[y][i] = st[(x-1)/3][(y-1)/3][i] = 0;
		 a[x][y] = 0; 
	 } 
	 return false; // 前面有填错了 
}
int main()
{
	for(int i = 1; i <= 9; i++)
	{
		for (int j = 1; j <= 9; j++)
		{
			int x; cin >> x;
			a[i][j] = x;
			if(x)	row[i][x] = col[j][x] = st[(i-1)/3][(j-1)/3][x] = 1; // 标记 
		}
	}
	dfs(1,1);
	for(int i = 1; i <= 9; i++)
	{
		for (int j = 1; j <= 9; j++) cout << a[i][j] << " ";
		cout << endl; 
	}
	return 0;
}
相关推荐
珊瑚里的鱼15 小时前
【动态规划】打家劫舍Ⅱ
算法·动态规划
chao18984415 小时前
SGM(Semi-Global Matching)立体匹配算法 — C++ 实现
开发语言·c++·算法
黎阳之光15 小时前
数智赋能水厂全链路安全|黎阳之光以视频孪生技术落地供水精细化管控
人工智能·物联网·算法·安全·数字孪生
NOVAnet202315 小时前
AI 全球化部署网络瓶颈:算法模型跨地域、跨云互联核心痛点解析
算法·ai·sd-wan·专线·跨区域
Misnearch15 小时前
1、数组/字符串
java·数据结构·算法
008爬虫实战录16 小时前
【数据结构】 树、二叉树、完全二叉树,先序遍历、中序遍历、后序遍历
数据结构·算法
小O的算法实验室16 小时前
2024年AST,基于费马点分组粒子群算法的复合型无人机统一路径规划
算法·无人机
AllData公司负责人16 小时前
大模型赋能AllData数据中台,系列升级|通过联合智谱大模型与BiSheng开源项目,建设企业大模型应用开发平台,支持知识库向量检索!
大数据·数据结构·数据库·算法·大模型·向量数据库·智谱ai
一个王同学16 小时前
从零到一 | CV转多模态大模型 | week12 | 整理 MiniLLaVA 工程与文档
人工智能·深度学习·算法·机器学习·计算机视觉
这料鬼有毒16 小时前
二刷hot100-78.子集
算法·leetcode·职场和发展