POJ2676 Sudoku(dfs)

SMMU软件指南SMMU编程之流表(Stream Table) SMMU使用一组内存中的数据结构来定位翻译数据,详见“转换过程概述”(Translation process overview)。SMMU_(*_)STRTAB_BASE 存储初始结构(流表,Stream Table)的基地址。流表项(Stream Table Entry, STE)包含二级(Stage 2)转换表的基址指针,同时也定位一级(Stage 1)配置结构,这些配置结构包含转换表的基址指针。 传入事务的 StreamID,由 SEC_SID 进行限定,决定了用于查找的流表,并定位相应的STE。 阅读详情

Sudoku
Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 16161 Accepted: 7894 Special Judge

Description

Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller squares 3x3 as shown on the Figure. In some of the cells are written decimal digits from 1 to 9. The other cells are empty. The goal is to fill the empty cells with decimal digits from 1 to 9, one digit per cell, in such way that in each row, in each column and in each marked 3x3 subsquare, all the digits from 1 to 9 to appear. Write a program to solve a given Sudoku-task. 

Input

The input data will start with the number of the test cases. For each test case, 9 lines follow, corresponding to the rows of the table. On each line a string of exactly 9 decimal digits is given, corresponding to the cells in this line. If a cell is empty it is represented by 0.

Output

For each test case your program should print the solution in the same format as the input data. The empty cells have to be filled according to the rules. If solutions is not unique, then the program may print any one of them.

Sample Input

1
103000509
002109400
000704000
300502006
060000050
700803004
000401000
009205800
804000107

Sample Output

143628579
572139468
986754231
391542786
468917352
725863914
237481695
619275843
854396127



数独游戏,0代表空格,让你填入数字,使得每行每列都是1-9。


    通过i,j,与网格关系可得出关系式:k = 3 * ((i - 1) / 3) + (j - 1) / 3 + 1,用来标记网格vis。每组数据从(1, 1)开始dfs,dfs内首先判断当前数字是0还是非0,若为非0则判断是否已经到了第九列,是的话就dfs下一行,否则dfs下一列(也就是遍历所有)。若当前数字为0则从1到9扫一遍,若扫到当前行当前列且网格的第i个未访问,就标记,而后再判断是否是第9列,最后判断是否符合题意,不符合则当前网格修改回去。


AC代码:


#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"
using namespace std;
const int MAXN = 10;
int map[MAXN][MAXN];
bool row[MAXN][MAXN], col[MAXN][MAXN], vis[MAXN][MAXN];
bool dfs(int x, int y)
{
	if(x == 10) return true;
	bool flag = false;
	if(map[x][y]) {
		if(y == 9) flag = dfs(x + 1, 1);
		else flag = dfs(x, y + 1);
		if(flag) return true;
		else return false;
	}
	else {
		int k = 3 * ((x - 1) / 3) + (y - 1) / 3 + 1;
		for(int i = 1; i <= 9; ++i)
				if(!row[x][i] && !col[y][i] && !vis[k][i]) {
					map[x][y] = i;
					row[x][i] = true;
					col[y][i] = true;
					vis[k][i] = true;
					if(y == 9) flag = dfs(x + 1, 1);
					else flag = dfs(x, y + 1);
					if(!flag) {
						map[x][y] = 0;
						row[x][i] = false;
						col[y][i] = false;
						vis[k][i] = false;
					}
					else return true;
				}
	}
	return false;
}
int main(int argc, char const *argv[])
{
	int t;
	cin >> t;
	while(t--) {
		memset(row, false, sizeof(row));
		memset(col, false, sizeof(col));
		memset(vis, false, sizeof(vis));
		char s[MAXN][MAXN];
		for(int i = 1; i <= 9; ++i)
			for(int j = 1; j <= 9; ++j) {
				cin >> s[i][j];
				map[i][j] = s[i][j] - '0';
				if(map[i][j]) {
					int k = 3 * ((i - 1) / 3) + (j - 1) / 3 + 1;
					row[i][map[i][j]] = true;
					col[j][map[i][j]] = true;
					vis[k][map[i][j]] = true;
				}
			}
		dfs(1, 1);
		for(int i = 1; i <= 9; ++i) {
			for(int j = 1; j <= 9; ++j)
				cout << map[i][j];
			cout << endl;
		}
	}
	return 0;
}


【Python机器学习】主成分分析(PCA):高维数据的“瘦身术“ 主成分分析(PCA)的历史可以追溯到1901年,当时Karl Pearson首次提出了这个概念。在计算机还不存在的年代,PCA是一个纯粹的数学构想,用来简化多变量数据的分析。几十年后,当计算机出现时,PCA成为了数据分析中最早实现的算法之一。从那时起,超过一个世纪的发展中,PCA一直保持着其核心的理论框架和实用价值,这本身就是对这个方法深刻科学性的证明。在现代深度学习时代,许多人可能会认为PCA已经过时了。但事实恰好相反。 阅读详情

相关推荐

扣子(coze)案例^第22期:零代码打造小红书竞品监控系统+AI自动生成运营策略建议

本文详细介绍了如何利用扣子(coze)平台零代码搭建小红书竞品监控系统。该系统通过自动化工作流抓取竞品笔记数据,并存入飞书多维表格,结合AI能力自动生成包含可视化分析报告在内的运营策略建议,帮助运营者高效进行数据驱动的市场分析。

weixin_29313239的博客 1005

POJ2676 Sudoku【DFS】

Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 28548 Accepted: 13016 Special Judge Description Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided t...

海岛Blog 788

【MATLAB+VScode】VScode调试MATLAB代码的终极指南

本文详细介绍了在VScode中调试MATLAB代码的完整方案。通过配置MATLAB Engine for Python作为桥梁,实现在VScode中设置断点、单步执行、查看变量等交互式调试功能,有效结合了VScode的现代化编辑体验与MATLAB的强大计算内核,显著提升开发效率。

weixin_29161719的博客 412

【POJ 2676】Sudoku数独(DFS)

思路:DFS遍历解数独,很有意思的题目,由于行、列、每一个3*3小方格都不能重复,故需要三个数组row,col,dig来标记某1~9数字是否出现。DFS遍历,具体思路见注释。

Chen_yuazzy的博客 1557

为什么BGA焊点总在四个角先坏?一次热-振耦合仿真给你讲明白

本文通过Ansys Workbench进行热-振耦合仿真,深入分析了BGA焊点在四个角点先失效的机理。研究发现,角点焊点由于CTE失配、振动载荷放大及几何应力集中等因素,承受的等效塑性应变和动态应力显著高于中心区域,导致其疲劳寿命大幅降低。仿真数据揭示了角点焊点的应力分布和蠕变特性,为电子封装可靠性设计提供了重要依据。

weixin_42535461的博客 439

永久关闭Windows更新的5种方法

很多家用电脑,如果系统自动更新的话,会变得越来越卡顿,且硬件型号兼容也并不完美。那么我们该如何彻底关闭Win11的自动更新呢?以下准备了5种方法,您可以根据自身实际情况选择合适的方法!

qq_43652793的博客 1万+

[poj 2676] Sudoku DFS

Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17035 Accepted: 8286 Special JudgeDescription Sudoku is a very simple task. A square table with 9 rows and 9 column

ATOD 604

SAP HANA CDS View Syntax Options 全解:从语法到工程实践

本文面向SAP HANA工程师,深入解析CDS视图的语法与应用场景。文章涵盖XS Advanced环境下的CDS视图设计要点,包括SELECT基础语法、聚合函数与分组约束、参数化视图实现以及常见连接操作。特别强调工程实践中的注意事项:GROUP BY禁用表达式、原生表名大小写规范、结果集裁剪方式选择等。通过两个真实案例(办公室占用率统计和客户画像分析)展示CDS视图在实际业务中的应用,并提供性能优化建议。全文采用中英文混排规范,技术术语使用反引号标注,旨在为开发者提供清晰的CDS视图开发指南。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 212

搜索技术【深度优先搜索】 - DFS+ 剪枝优化 【POJ No. 2676】数独游戏 Sudoku

搜索技术【深度优先搜索】 - DFS+ 剪枝优化 【POJ No. 2676】数独游戏 Sudoku

代码改变世界 1044

AutoSAR配置与实践(深入篇)5.4 OS原理(下 )- 内存保护(MPU)

ECU可能由内部模块、第三方模块等各模块集成的。需求对每个模块所定义的安全等级可能有差异,需要考虑不同安全等级的模块和代码间减少相互干扰,防止程序错误传播。可以理解为包含Task、Alarm、Counter、Schedule table、ISRs、Event等基本对象的容器,用于隔离Task/Alarm等,进行内存保护。

nihaoljq2010的博客 3536

【QNX+Android虚拟化方案】00 - 系列文章链接汇总

【QNX+Android虚拟化方案】00 - 系列文章链接汇总

|~~~热爱生活、努力学习的小伙汁~~~| 1万+

POJ 2676 Sudoku 【dfs】

Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 27881 Accepted: 12773 Special Judge Description Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided t...

正月看雪花的博客 281

UI渲染顺序:合批为何被拆碎?

在 Hierarchy 中,避免出现:Image(列表1) → Text(列表1) → 特效 → Image(列表2) → Text(列表2)…若可行,在逻辑上把布局组织成“同类元素集中”:例如:列表行中,Image 集中、Text 集中;或者接受 Text 本身就拆出一批,关键是不要在 Text 中间再插入别的材质。现实中不一定能做到完美的“所有 Image 连在一起”,但你会有一个意识:同一 Canvas 内,如果你把不同材质的元素交错穿插,

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 85

poj2676 Sudoku(DFS)

做了很久还是参考了别人的答案orz,其实也不难啊。我要开始学一下怎么写搜索了。。。 题目链接:poj2676 Sudoku 题解:暴力搜索,DFS每个空白格子所放数字。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algo...

dhe56357的博客 148

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

poj2676 sudoku dfs

传送门:poj2676 题意就是解数独呗。。 解题的关键在于book数组,一开始我的book[i][j][k]是用来记录i,j点上可不可以用k这个数字,然后dfs的时候每在i,j点填入一个值k,就将第i行第j列和i,j所在的小九宫格中所有的节点对应的标记数组更新(即把k标记为不可用),但是这样在回溯过程中会有一个巨大的并且基本无法弥补的bug,就是一开始大九宫格中就有固定的数,因此有些位置在d

WA是一笔财富 417

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

POJ2676 Sudoku DFS

题目链接 http://poj.org/problem?id=2676 分析 DFS每个位置,用三个二进制数来表示某行,某行,某九宫格可填数的候选范围,依次尝试填入。 AC代码 #include <cstdio> #include <cstring> const int maxn = 15; int r[maxn], c[maxn], p[maxn], flag; ch...

Kevin的博客 210

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

POJ 2676 sudoku dfs

题意:数独游戏,用1-9个数字填满9 * 9 的格子,让每行,每列,每个小的3 * 3 格子都有唯一的一个数字。 思路:简单的dfs。 代码如下: #include #include #include using namespace std; char sudoku[9][20]; bool rows[9][10]; bool columns[9][10]; bool blocks

leodestiny 611

poj2676 Sudoku dfs

传送门:poj2676 Sudoku题目大意九宫格问题,也有人叫数独问题 把一个9行9列的网格,再细分为9个3*3的子网格,要求每行、每列、每个子网格内都只能使用一次1~9中的一个数字,即每行、每列、每个子网格内都不允许出现相同的数字。0是待填位置,其他均为已填入的数字。 要求填完九宫格并输出(如果有多种结果,则只需输出其中一种) 如果给定的九宫格无法按要求填出来,则输出原来所输入的未填的九宫

woshinannan的专栏 478

POJ2676-Sudoku【DFS】

Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller squares 3x3 as shown on the Figure. In some of the cells are written decimal digits from 1 to 9. The othe...

独钓门前月 411

dfs +剪枝sudoku———poj2676

dfs +剪枝sudoku———poj2676

2301_80093604的博客 2593

POJ 2676 Sudoku(经典DFS)

Sudoku Time Limit:2000MS Memory Limit:65536K Total Submissions:11575 Accepted:5748 Special Judge Description Sudoku is a very simple task. A square table w...

MengDeMao1234的博客 187

[DFS]poj 2676 Sudoku 数独问题

Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14917   Accepted: 7372   Special Judge Description Sudoku is a very simple task. A square table wi

童凌的技术博客 778

poj 2676 Sudoku (基础DFS)

Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15456   Accepted: 7574   Special Judge Description Sudoku is a very simple task. A square table wi

ysCover 1237

poj-2676 Sudoku(DFS)

Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 30704 Accepted: 13960 Special Judge Description Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller squares 3x3 as shown on the Figure. In some

weixin_47750287的博客 286

POJ2676 Sudoku - DFS

POJ2676 Sudoku 传送门 题意: 填充未完成的数独。。。(就这么简单。。。。 思路: 爆搜即可。 可行性剪枝:用三个\(bool\)数组分别记录行、列、\(3*3\)的块中,\(9\)种数字的使用情况 AC Code: #include<cstdio> #include<cstring> #include<algorithm> using ...

dmqqndlx85675的博客 219

Sudoku POJ - 2676 DFS

Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller squares 3x3 as shown on the Figure. In some of the cells are written decimal digits from 1 to 9. The othe...

loooooog的博客 185
上一篇: UVA12545 Bits Equalizer(脑洞)
下一篇: POJ1111 Image Perimeters(dfs)
GKHack
博客等级 码龄11年 48粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值