点击打开链接

Sudoku Killer

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 9634    Accepted Submission(s): 2887

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

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

Author

linle

Source

ACM暑期集训队练习赛(三)

Recommend

LL   |   We have carefully selected several similar problems for you:  1258 1045 1016 1010 2614

思路:

找到每个空位,从1到9尝试一遍,不冲突就把这个数字填上,然后填下一个空位

重点:

判断九宫格内的数字是否合法

 int tmpx=(x/3)*3,tmpy=(y/3)*3;  for(int i=tmpx;i<tmpx+3;++i){//判断九宫格  for(int j=tmpy;j<tmpy+3;++j){  if(sd[i][j]==k)return false;  }  }  
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
P node[90];
int sd[10][10],f=0,cnt;
bool jud(int x,int y,int k){for(int i=0;i<9;++i){//判断行和列if(sd[i][y]==k)return false;if(sd[x][i]==k)return false;}int tmpx=(x/3)*3,tmpy=(y/3)*3;for(int i=tmpx;i<tmpx+3;++i){//判断九宫格for(int j=tmpy;j<tmpy+3;++j){if(sd[i][j]==k)return false;}}return true;
}
void dfs(int n){if(f)return;if(n==cnt){f=1;for(int i=0;i<9;++i){for(int j=0;j<9;++j){printf("%d%c",sd[i][j],j==8?'\n':' ');}}return;}for(int i=1;i<=9;++i){if(jud(node[n].first,node[n].second,i)){sd[node[n].first][node[n].second]=i;dfs(n+1);}if(f)return;//找到结果,退出函数}sd[node[n].first][node[n].second]=0;//循环结束也没有解,说明此状态无解,退回0
}
int main(){char s[5];int i,j;while(~scanf("%s",s)){//scanf自动忽略回车,所以不用处理数据之间的空行cnt=0;sd[0][0]=(s[0]=='?'?0:s[0]-'0');//处理第一行第一位for(i=1;i<9;++i){scanf("%s",s);sd[0][i]=(s[0]=='?'?0:s[0]-'0');//第一行后面八位}for(i=1;i<9;++i){for(j=0;j<9;++j){scanf("%s",s);sd[i][j]=(s[0]=='?'?0:s[0]-'0');//后面八行}}for(int i=0;i<9;++i){//记录没有填的位置for(int j=0;j<9;++j){if(!sd[i][j])node[cnt].first=i,node[cnt++].second=j;}}if(f)putchar('\n');//两组解之间有空格f=0;dfs(0);}
}

HDU1426 Sudoku Killer DFS相关推荐

  1. hdu1426 Sudoku Killer

    简单的DFS,将所有未填的位置依次保存起来,之后,对每一个未填的位置依次枚举,往下搜即可 :: 本来想用DLX的做的,hdu3111是过了,可是原先那个模板在这道题里就是超时,不解啊,换一个模板就过了 ...

  2. HDU 1476 Sudoku Killer

    Sudoku Killer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  3. HDU 1426 Sudoku Killer【DFS 数独】

    自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视.  据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品 ...

  4. Sudoku Killer(HDU-1426)

    Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行 ...

  5. 杭电oj 1426 Sudoku Killer(深度优先搜索 回溯)

    Sudoku KillerTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  6. 数独Sudoku(DFS)

    题目: 数独是一种填数字游戏,英文名叫 Sudoku. 玩家需要根据 9×9盘面上的已知数字,推理出所有剩余位置的数字,并满足每一行.每一列.每一个粗线九宫格内的数字包含有 1-9 的数字,且不重复. ...

  7. HDU 1426 Sudoku Killer

    数独(DFS). 非常忧伤的一道题,先是剪枝的三个数组开成[9][9]导致 越界了WA. 然后就是每两组输出之间有空行,可是最后一组后面不能输出空行.PE好多次. #include<cstdio ...

  8. 搜索 —— 深度优先搜索(DFS)

    [概述] 深度优先搜索,是从初始状态起,利用一定的规则生成搜索树,寻找下一层任一个结点,检查是否出现目标状态,若未出现,以此状态利用规则生成再下一层任一个结点,再检查,重复过程一直到叶节点(即不能再生 ...

  9. 【HDOJ图论题集】【转】

    1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...

最新文章

  1. 用逻辑回归模型解决互联网金融信用风险问题
  2. 用python绘制柱状图标题-Python笔记:用Python绘制炫酷的柱形图
  3. office365加速解决方案
  4. 【转】SQL Server 2005 数据类型和.Net数据类型的对应关系
  5. 计算机程序大赛编程,【小学组】海淀区第三届“智慧杯”中小学生计算机程序设计大赛编程思维类初赛...
  6. 信息检索 python_python-工程数据结构/信息检索和存储
  7. 深度学习算法_深度学习算法
  8. python项目实践_python实践项目
  9. vs 调试exe引用的lib
  10. sql prompt linux,SQL PROMPT的设置
  11. Vs2010中文版MSDN 安装方法
  12. android获取摄像头视频分辨率,相机自定义拍照录像,可设置分辨率、焦距、无声录像、支持横竖屏...
  13. java implode函数_PHP警告:implode():传递的参数无效
  14. 照片损坏怎么办,怎么恢复受损照片
  15. java数字时钟代码,Android自定义数字时钟代码,android自定义时钟,package jp.t
  16. Bugku Misc 我永远喜欢穹妹
  17. a32.ansible 生产实战案例 -- 基于kubeadm安装kubernetes v1.22 -- 集群部署(一)
  18. jitter概念理解
  19. 小程序微信头像授权、手机号授权、地理位置授权
  20. 我学MSA 之:线性分析(回归法)

热门文章

  1. LeetCode 300. 最长上升子序列(Longest Increasing Subsequence)
  2. 基于RSA的WEB前端密码加密方案
  3. Android WebView开发问题及优化汇总
  4. MyEclipse 10 之下Web Service 的创建和实现
  5. 通用权限管理系统组件 (GPM - General Permissions Manager) 给信息管理系统加一个初始化的功能,调用存储过程...
  6. java编写单词数_JAVA flink小试——单词计数
  7. java循环链表类_3、循环链表(java实现)
  8. 主持人副语言包括什么_央视主持人大赛,董卿最精彩的这几段点评,居然被剪掉了...
  9. 服务器启动文件,[Zookeeper] 服务端之单机版服务器启动
  10. 神经网络 并行预测_研究人员研究了为什么神经网络可以有效地进行预测