POJ 2676 - Sudoku - [蓝桥杯 数独][DFS]
题目链接:http://poj.org/problem?id=2676
Time Limit: 2000MS Memory Limit: 65536K
Description

Input
Output
Sample Input
- 1
- 103000509
- 002109400
- 000704000
- 300502006
- 060000050
- 700803004
- 000401000
- 009205800
- 804000107
Sample Output
- 143628579
- 572139468
- 986754231
- 391542786
- 468917352
- 725863914
- 237481695
- 619275843
- 854396127
题意:
你一定听说过“数独”游戏。
如【图1.png】,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。
数独的答案都是唯一的,所以,多个解也称为无解。
本图的数字据说是芬兰数学家花了3个月的时间设计出来的较难的题目。但对会使用计算机编程的你来说,恐怕易如反掌了。
本题的要求就是输入数独题目,程序输出数独的唯一解。我们保证所有已知数据的格式都是合法的,并且题目有唯一的解。
格式要求:
输入9行,每行9个数字,0代表未知,其它数字为已知。
输出9行,每行9个数字表示数独的解。
题解:
从[1,1]到[9,9]地进行DFS
AC代码:
- #include<cstdio>
- #include<cstring>
- using namespace std;
- int num[][];
- bool rowVis[][],colVis[][],matVis[][];
- struct Pos{
- int row,col;
- Pos nextpos()
- {
- if(col==) return (Pos){row+,};
- else return (Pos){row,col+};
- }
- int MatID(){return (row-)/* + (col-)/+;}
- bool ok(int x)
- {
- if(!rowVis[row][x] && !colVis[col][x] && !matVis[MatID()][x]) return ;
- else return ;
- }
- };
- void mark(Pos pos,int x,bool val)
- {
- rowVis[pos.row][x] = val;
- colVis[pos.col][x] = val;
- matVis[pos.MatID()][x] = val;
- }
- bool dfs(Pos pos)
- {
- int row=pos.row,col=pos.col;
- if(row==) return ;
- if(num[row][col]) return dfs(pos.nextpos());
- for(int i=;i<=;i++)
- {
- if(pos.ok(i))
- {
- num[row][col]=i; mark(pos,i,);
- if(dfs(pos.nextpos())) return ;
- num[row][col]=; mark(pos,i,);
- }
- }
- return ;
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--)
- {
- memset(rowVis,,sizeof(rowVis));
- memset(colVis,,sizeof(colVis));
- memset(matVis,,sizeof(matVis));
- for(int row=;row<=;row++)
- {
- char tmp[]; scanf("%s",tmp);
- for(int col=;col<=;col++)
- {
- num[row][col]=tmp[col-]-'';
- if(num[row][col]) mark((Pos){row,col},num[row][col],);
- }
- }
- dfs((Pos){,});
- for(int row=;row<=;row++)
- {
- for(int col=;col<=;col++) printf("%d",num[row][col]);
- printf("\n");
- }
- }
- }
POJ 2676 - Sudoku - [蓝桥杯 数独][DFS]的更多相关文章
- 深搜+回溯 POJ 2676 Sudoku
POJ 2676 Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17627 Accepted: 8538 ...
- ACM : POJ 2676 SudoKu DFS - 数独
SudoKu Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu POJ 2676 Descr ...
- 蓝桥杯---数独(模拟 || dfs)
[编程题](满分33分) "数独"是当下炙手可热的智力游戏.一般认为它的起源是"拉丁方块",是大数 学家欧拉于1783年发明的. 如图[1.jpg]所示:6x6 ...
- 蓝桥杯 带分数 DFS应用
问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...
- POJ 2676 Sudoku (数独 DFS)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14368 Accepted: 7102 Special Judg ...
- POJ - 2676 Sudoku 数独游戏 dfs神奇的反搜
Sudoku Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smalle ...
- 搜索 --- 数独求解 POJ 2676 Sudoku
Sudoku Problem's Link: http://poj.org/problem?id=2676 Mean: 略 analyse: 记录所有空位置,判断当前空位置是否可以填某个数,然后直 ...
- poj 2676 Sudoku ( dfs )
dfs 用的还是不行啊,做题还是得看别人的博客!!! 题目:http://poj.org/problem?id=2676 题意:把一个9行9列的网格,再细分为9个3*3的子网格,要求每行.每列.每个子 ...
- POJ 2676 Sudoku (DFS)
Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11694 Accepted: 5812 Special ...
随机推荐
- Linux+Redis实战教程_Linux上安装jdk,mysql,tomcat_安装jdk
1. Linux上安装jdk,mysql,tomcat[重点] Windows 控制面板 添加/卸载程序 进行程序的安装.更新.卸载.查看 rpm命令:相当于windows的添加/卸载程序 进行程序的 ...
- ios开发之--AVAudioPlayer/AVPlayer的应用
项目当中用到了音频播放器,所以就参考官方文档,写了一个,代码如下: .h #import <UIKit/UIKit.h> @interface hAudioPlayViewControll ...
- java.lang.NumberFormatException: For input string: "${jdbc.maxActive}"
一.问题 使用SpringMVC和MyBatis整合,将jdbc配置隔离出来的时候出现下面的错误,百度了很久没有找到解决方法,回家谷歌下,就找到解决方法了,不得不说谷歌就是强大,不废话,下面是具体的错 ...
- 如何构建日均千万PV Web站点 (一)
其实大多数互联网网站起初的网站架构都是(Linux+Apache+MySQL+PHP). 不过随着时代的发展,科技的进步.互联网进入寻常百姓家的生活.所谓的用户的需求,铸就了一个个互联网大牛: htt ...
- PHP中$_SERVER的详细用法
PHP中$_SERVER的详细用法 $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关. $_SERVER['argv'] #传递给该脚本的参数. ...
- 【PHP】常见算法
1 冒泡排序 思路:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒. 即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它 ...
- 【Linux】 解决报错: ImportError: libSM.so.6: cannot open shared object file: No such file or directory
centos7 + python3.6.4 我使用 pip3 install opencv-python 安装了opencv-python 之后,在使用 import cv2 报错如下 报错原因 ...
- 【python3】基于 qq邮箱的邮件发送
脚本内容: #!/usr/bin/python3 # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText ...
- RAID在数据库存储上的应用
随着单块磁盘在数据安全.性能.容量上呈现出的局限,磁盘阵列(Redundant Arrays of Inexpensive/Independent Disks,RAID)出现了,RAID把多块独立的磁 ...
- 【大数据系列】MapReduce详解
MapReduce是hadoop中的一个计算框架,用来处理大数据.所谓大数据处理,即以价值为导向,对大数据加工,挖掘和优化等各种处理. MapReduce擅长处理大数据,这是由MapReduce的设计 ...