Problem Description
自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视。
据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品———HDU免费七日游外加lcy亲笔签名以及同hdu acm team合影留念的机会。
所以全球人民前仆后继,为了奖品日夜训练茶饭不思。当然也包括初学者linle,不过他太笨了又没有多少耐性,只能做做最最基本的数独题,不过他还是想得到那些奖品,你能帮帮他吗?你只要把答案告诉他就可以,不用教他是怎么做的。

数独游戏的规则是这样的:在一个9x9的方格中,你需要把数字1-9填写到空格当中,并且使方格的每一行和每一列中都包含1-9这九个数字。同时还要保证,空格中用粗线划分成9个3x3的方格也同时包含1-9这九个数字。比如有这样一个题,大家可以仔细观察一下,在这里面每行、每列,以及每个3x3的方格都包含1-9这九个数字。

Input
本题包含多组测试,每组之间由一个空行隔开。每组测试会给你一个 9*9 的矩阵,同一行相邻的两个元素用一个空格分开。其中1-9代表该位置的已经填好的数,问号(?)表示需要你填的数。
Output
对于每组测试,请输出它的解,同一行相邻的两个数用一个空格分开。两组解之间要一个空行。
对于每组测试数据保证它有且只有一个解。

Sample Input
7 1 2 ? 6 ? 3 5 8
? 6 5 2 ? 7 1 ? 4
? ? 8 5 1 3 6 7 2
9 2 4 ? 5 6 ? 3 7
5 ? 6 ? ? ? 2 4 1
1 ? 3 7 2 ? 9 ? 5
? ? 1 9 7 5 4 8 6
6 ? 7 8 3 ? 5 1 9
8 5 9 ? 4 ? ? 2 3

? ? ? ? ? 3 9 ? ?
? 5 8 ? ? ? ? ? ?
? 6 ? ? ? ? ? ? ?
? ? ? 1 5 ? ? ? 8
? ? ? ? ? ? 4 ? ?
9 ? ? ? ? ? ? ? ?
2 ? ? ? ? ? 3 1 ?
? ? ? 5 ? ? ? 6 ?
? ? ? 8 7 ? ? ? ?

Sample Output

7 1 2 4 6 9 3 5 8
3 6 5 2 8 7 1 9 4
4 9 8 5 1 3 6 7 2
9 2 4 1 5 6 8 3 7
5 7 6 3 9 8 2 4 1
1 8 3 7 2 4 9 6 5
2 3 1 9 7 5 4 8 6
6 4 7 8 3 2 5 1 9
8 5 9 6 4 1 7 2 3

7 1 2 6 8 3 9 5 4
3 5 8 9 1 4 6 7 2
4 6 9 7 2 5 1 8 3
6 4 3 1 5 9 7 2 8
8 2 5 3 6 7 4 9 1
9 7 1 2 4 8 5 3 6
2 8 7 4 9 6 3 1 5
1 9 4 5 3 2 8 6 7
5 3 6 8 7 1 2 4 9

http://acm.hdu.edu.cn/showproblem.php?pid=1426

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<map>
#include<iomanip>
#define INF 99999999
using namespace std;const int MAX=10;
char map_[MAX][MAX];
int pos[MAX*9][2];//存储是问号点的坐标,方便搜索时只需要搜索这些点填什么数字.
bool row[MAX][MAX],list[MAX][MAX];//用来标明哪行哪列出现过什么数.
int k;bool check(int v,int num){int n=pos[v][0]/3*3;//搜索周围9小格的行的开始搜索位置.int m=pos[v][1]/3*3;//搜索周围9小格的列的开始搜索位置.for(int i=n;i<n+3;++i){for(int j=m;j<m+3;++j){if(map_[i][j] == num+'0')return false;}}return true;
}bool DFS(int v){if(v == k){return true;}//代表前面已经把所有的点都搜索完了.for(int i=1;i<10;++i){if(!row[pos[v][0]][i] && !list[pos[v][1]][i] && check(v,i)){map_[pos[v][0]][pos[v][1]]=i+'0';row[pos[v][0]][i]=true;list[pos[v][1]][i]=true;if(DFS(v+1)){return true;}map_[pos[v][0]][pos[v][1]]='?';row[pos[v][0]][i]=false;list[pos[v][1]][i]=false;}}return false;
}void output(){for(int i=0;i<9;++i){cout<<map_[i][0];for(int j=1;j<9;++j){cout<<' '<<map_[i][j];}cout<<endl;}return;
}int main(){int num=0;while(1){k=0;memset(row,false,sizeof row);memset(list,false,sizeof list);for(int i=0;i<9;++i){for(int j=0;j<9;++j){if(!(cin>>map_[i][j]))exit(0);if(map_[i][j] == '?'){pos[k][0]=i;pos[k++][1]=j;continue;}row[i][map_[i][j]-'0']=true;list[j][map_[i][j]-'0']=true;}}DFS(0);//开始搜索第1个是问号的点.if(num++)cout<<endl;output();}return 0;
} 

hdu1426一道很有意思的题目:数独相关推荐

  1. 一道比较有意思的题目

    今天碰到一道有意思的题目,刚开始摸不着头脑,其实不太难!话不多说,上题目. Problem 现有一个2行13列的棋盘,棋盘上的任意一个位置可以向他临近的8个位置移动(即上.下.左.右.左上.右上.左下 ...

  2. 一道《有意思的题目》

    偶然看到老陈的有意思的题目,果然有意思!在这里拿来分析分析,原题如下: <script type="text/javascript">     function tes ...

  3. 一道很有意思的面试题目,快加入到这场头脑风暴游戏里吧~

    小伙伴们,小叶秋最近看到一个面试题目,感觉挺有意思的,大意如下: ok,大家看到这个题,可以先理解下,这里启动了两个线程,a 和 b,但是虽然说 a 在 b 之前 start,不一定就可以保证线程 a ...

  4. stl-map的一道很好的题目

    Damn Single (25) "Damn Single (单身狗)" is the Chinese nickname for someone who is being sing ...

  5. 剑指Offer中很有意思的题目摘要

    剑指offer所有题都刷完了一遍,大部分都是比较基础的,只是有一些是值得记录下来反复领会的,在这里做一个记录. 1. LCA问题(树中两个节点的最小公共父节点) 2. 巧妙的位运算 2.1 不用加减乘 ...

  6. 一道很有意思的面试题,考推理和逻辑能力

    问题: 一个屋子里面有五十个人,每个人领着一条狗,而这些狗中有一部分病狗(不少于一条).假定有如下条件: 一,狗的病不会传染,也不会不治而愈.也就是说病狗的数量一直不会改变: 二,狗的主人不能看见自己 ...

  7. zjzj只爱数学--一道很厉害的题目(原创)

    题目背景 zjzjzjzjzjzj 大佬最喜欢的,就是找到一些红的数学题,把他们改变成蓝的,紫的,甚至黑的. 题目描述 有一天, zjzjzjzjzjzj 大(jù)佬(ruò) 看到了 fxtfxt ...

  8. 漫画:位运算技巧整理汇总+一道被嫌弃的题目

    (这首歌挺喜欢的...分享出来) 今天是小浩算法"365刷题计划"第65天.这两天总有人来问我,做公众号赚了多少钱,或者就是怎么能和你一样,2个月就做到7000粉丝.说实话,至少到 ...

  9. 7个小众却很有意思的工具推荐,每一个都是大宝藏!

    作为一个工具控,自己也体验了上百个软件和网站,今天给大家推荐7个小众很有意思的工具,喜欢的话记得点赞支持哦~ 1.正版中国 正版中国是一个分享正版软件限时免费信息的网站.有很多优质的正版软件会做一些限 ...

最新文章

  1. 20165331 第六周学习总结
  2. Conda环境搭建记录
  3. JZOJ 5677. 【GDOI2018Day2模拟4.21】纽约
  4. 过滤日志中不相关的堆栈跟踪行
  5. 批处理命令无法连续执行
  6. 统一项目管理平台(UMPlatForm.NET)-4.7 组织机构管理模块
  7. 人脸识别资源推荐:20款人脸检测/识别的API、库和软件
  8. 订餐系统jsp模板_java|web|jsp网上订餐系统|餐饮管理|在线点餐外卖网站|源码代码...
  9. css帧动画点击执行一次_CSS动画深入浅出
  10. HDU2072 单词数(字典树)
  11. 漏型与源型、PNP与NPN
  12. 大麦 Android 选座场景性能优化全解析
  13. 藏苹果 HNSUT 1889
  14. Linux命令行窗口无法输入密码
  15. 使用route查看路由表,添加/删除默认路由网关
  16. 南卡和索尼蓝牙耳机哪个更好?性价比高的蓝牙耳机推荐
  17. 老板们这些股权结构需要优化了
  18. 5本必读Python入门书籍,你都看过吗?(附福利)
  19. 【C++】面试题目,整理自牛客网
  20. 旁路电容和去藕电容基础知识汇总

热门文章

  1. 【云游戏】云游戏学习与实践(一)——云游戏概述
  2. LoRa Server@Windows:一键安装
  3. 蝉知CMS本地迁移到服务器具体步骤
  4. 集多功能为一体的智能WiFi模块Linux多线程处理器openwrt开发板工业4G路由器网口有线转无线WiFi
  5. 计算机与交换机基本网络设置方法,交换机配置方法 网络交换机的详细配置方法(图文教程)...
  6. 使用MATLAB对于Excel表格进行处理
  7. 简单的文件操作-分片上传【h5技术】
  8. 多传感器融合之雷达图像数据集自动生成 - 20220613
  9. vuecli3关闭 Prefetch
  10. BetaFlight模块设计之九:气压计任务分析