Problem Description

自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视。

据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品———HDU免费七日游外加lcy亲笔签名以及同hdu acm team合影留念的机会。

所以全球人民前仆后继,为了奖品日夜训练茶饭不思。当然也包括初学者linle,不过他太笨了又没有多少耐性,只能做做最最基本的数独题,不过他还是想得到那些奖品,你能帮帮他吗?你只要把答案告诉他就可以,不用教他是怎么做的。

数独游戏的规则是这样的:在一个9x9的方格中,你需要把数字1-9填写到空格当中,并且使方格的每一行和每一列中都包含1-9这九个数字。同时还要保证,空格中用粗线划分成9个3x3的方格也同时包含1-9这九个数字。

Input

本题包含多组测试,每组之间由一个空行隔开。每组测试会给你一个 9*9 的矩阵,同一行相邻的两个元素用一个空格分开。其中1-9代表该位置的已经填好的数,问号(?)表示需要你填的数。

Output

对于每组测试,请输出它的解,同一行相邻的两个数用一个空格分开。两组解之间要一个空行。<br>对于每组测试数据保证它有且只有一个解。

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

思路:行列判断好解决,但区域判断不好处理,使用dfs,先判断行列,若行列成立再判断区域。

Source Program

#include<bits/stdc++.h>
using namespace std;
int a[10][10];
int ans,tot,flag;struct pointer
{int x;int y;int step;
}save[1000];int dfs(int x,int y)
{int i,j;if(flag==1)return 0;if(ans==(tot+1)){for(i=1;i<=9;i++){for(j=1;j<=9;j++){if(j<9)printf("%d ",a[i][j]);elseprintf("%d",a[i][j]);}cout<<endl;}flag=1;return 0;}int row[10],line[10];memset(row,0,sizeof(row));memset(line,0,sizeof(line));for(i=1;i<=9;i++){if(a[x][i]!=0)//判断行row[a[x][i]]=1;if(a[i][y]!=0)//判断列line[a[i][y]]=1;}int x1=(x/4)*4,y1=(y/4)*4,flag1=0,k,t;//for(i=1;i<=9;i++){if(row[i]&&line[i])continue;  //如果行列成立,才往下flag1=0;for(k=x1;k<x1+3;k++)//判断区域{for(t=y1;t<y1+3;t++)if(a[k][t]==i){flag1=1;break;}if(flag==1)break;}if(flag1==0){ans++;a[x][y]=i;dfs(save[ans].x,save[ans].y);a[x][y]=0;ans--;}}return 0;
}
int main()
{int i,j;int k;while(1){k=0;flag=0;ans=1;//记录找到第几个?tot=0;//问号总数memset(save,0,sizeof(save));for(i=1;i<=9;i++)for(j=1;j<=9;j++){scanf("%d",&a[i][j]);if(a[i][j]==0)//输入?,会变成0{tot++;k++;/*记录问号*/save[k].x=i;save[k].y=j;}cin.get();}dfs(save[1].x,save[1].y);cout<<endl;}
}

Sudoku Killer(HDU-1426)相关推荐

  1. 有源汇有上下界最大流/最小流 配题(HDU 3157)

    因为是有源汇所以设源点为 s,汇点为 t. 有源汇有上下界最大流: 连接一条 t 指向 s 的边,容量为 INF. 通过上述步骤,现在图变成了无源汇网络. 引入超级源点 S,超级汇点 T. 连接一条 ...

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

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

  3. 最大表示法--环形字符串最大字典序(HDU 5442)

    http://acm.hdu.edu.cn/showproblem.php?pid=5442 问题概述:n个字符围成一个环,请从这个环中找出字典序最大的长度为n的字符串,输出它的起始点和方向(0顺1 ...

  4. HDU2019多校第二场 1009(HDU 6599) I Love Palindrome String(回文树(自动机)+manacher)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6599 解题思路: 回文自动机求每个本质不同的子串出现的次数,同时记录每个节点i代表的回文串第一次出现的 ...

  5. S-Nim (HDU 1536)组合博弈SG多组游戏

    S-Nim 题目链接 Problem Description Arthur and his sister Caroll have been playing a game called Nim for ...

  6. BestCoder25 1001.Harry and Magical Computer(hdu 5154) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5154 题目意思:有 n 门 processes(编号依次为1,2,...,n),然后给出 m 种关系: ...

  7. (HDU - 1847)Good Luck in CET-4 Everybody!(博弈)

    题目链接:Good Luck in CET-4 Everybody! - HDU 1847 - Virtual Judge (ppsucxtt.cn) 题目是中文的,我在这就不翻译题意了. 先说一种打 ...

  8. 美素数(HDU 4548)(打表,简化时间复杂度)

    相信大家都喜欢美的东西,让我们一起来看看美素数吧. 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为"美素数",如29,本身是素数,而且2+9 = 11 ...

  9. 单词数(HDU 2072)

    lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. Input 有多组数据,每组一行,每组就 ...

最新文章

  1. MySQL每秒57万的写入,带你装逼,带你飞 !!
  2. sql 拼接int类型的字段_一套简单实用的SQL脚本(下篇)
  3. 【招聘(上海)】东方财富证券招聘.net开发
  4. Python正则表达式笔记
  5. linux shc shell脚本_详解shell脚本加密解密软件—gzese和shc
  6. 操作系统【五】分段内存管理+段页式内存管理
  7. linux 的内核参数优化,Linux服务器内核参数优化
  8. linux 无线命令
  9. MySQL8.0数据库配置注意事项
  10. oracle默认端口号是,sqlserver、mysql、oracle各自的默认端口号
  11. 获取京东JDCookie
  12. 计算机环境变量怎么恢复默认,环境变量怎么还原
  13. 论文查重率多少合格?
  14. 计算机考研落榜了怎么办,如果,你考研落榜了怎么办?
  15. Android高仿淘宝订单列表效果,列表中嵌套列表
  16. c语言字符串输出大写字母个数,欧洲区预选赛视频直播 -官方网站
  17. E-R图、N-S图、PAD图、程序流程图
  18. 基于Hololens开发---本地化空间锚点
  19. Redis笔记(Linux部署redis过程)
  20. vue2中h(“router-view“) vue3如何写?

热门文章

  1. linux文件夹重命名busy,Linux下执行程序出现 Text file busy 提示时的解决方法
  2. 阿里二面差点败在这道题:MySQL自增主键为何不是连续的呢?
  3. 面试又栽在JVM调优上了!
  4. 搞定ReentrantReadWriteLock 几道小小数学题就够了
  5. 为啥HashMap的默认容量是16?
  6. 突发! 重庆全面封杀P2P!下一个会是谁?
  7. 在window打包war
  8. 移动页面自适应手机屏幕宽度HTML5开发
  9. Oracle开发专题之:分析函数(OVER)
  10. SpringBoot2.0 基础案例(14):基于Yml配置方式,实现文件上传逻辑