hdu Sudoku Killer
简单的dfs,主要就是每个?处填的值是否满足条件的判断。这道题感觉考察的是输出格式的控制。
#include"iostream"
#include"stdio.h"
#include"algorithm"
#include"cmath"
#include"string.h"
#include"string"
#define mx 1005
using namespace std;
int shudu[][];
int num,icase;
bool flag;
struct node
{
int x,y;
}position[mx]; bool check(int num,int cur)
{
int i,j;
for(i=;i<;i++)
{
if(i==position[cur].x) continue;
if(num==shudu[i][position[cur].y]) return false;
}
for(j=;j<;j++)
{
if(j==position[cur].y) continue;
if(num==shudu[position[cur].x][j]) return false;
}
int xx=position[cur].x,yy=position[cur].y;
xx=(xx/)*;yy=(yy/)*;
for(i=xx;i<xx+;i++)
{
for(j=yy;j<yy+;j++)
{
if(i==position[cur].x&&j==position[cur].y) continue;
if(num==shudu[i][j]) return false;
}
}
return true;
}
void dis()
{
if(icase++) cout<<endl;
for(int i=;i<;i++)
{
cout<<shudu[i][];
for(int j=;j<;j++)
cout<<' '<<shudu[i][j];
cout<<endl;
}
}
void dfs(int step)
{
if(flag) return;
if(step==num)
{
dis();
flag=true;
return;
}
for(int i=;i<=;i++)
{
if(check(i,step))
{
shudu[position[step].x][position[step].y]=i;
dfs(step+);
shudu[position[step].x][position[step].y]=;
}
}
}
int main()
{
int i,j;
icase=;
char s[];
while(scanf("%s",s)!=EOF)
{
flag=false;
num=;
if(s[]=='?')
{
position[num].x=;position[num++].y=;shudu[][]=;
}
else shudu[][]=s[]-'';
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(i==&&j==) continue;
scanf("%s",s);
if(s[]=='?')
{
position[num].x=i;position[num++].y=j;shudu[i][j]=;
}
else
{
shudu[i][j]=s[]-'';
}
}
}
dfs();
}
return ;
}
hdu Sudoku Killer的更多相关文章
- hdu 1426:Sudoku Killer(DFS深搜,进阶题目,求数独的解)
Sudoku Killer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- HDU 1426 Sudoku Killer(dfs 解数独)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1426 Sudoku Killer Time Limit: 2000/1000 MS (Java/Oth ...
- hdu 1426 Sudoku Killer (dfs)
Sudoku Killer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- P - Sudoku Killer HDU - 1426(dfs + map统计数据)
P - Sudoku Killer HDU - 1426 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为 ...
- hdu1426 Sudoku Killer
Sudoku Killer Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total ...
- Sudoku Killer
Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行 ...
- HDU1426 Sudoku Killer(DFS暴力) 2016-07-24 14:56 65人阅读 评论(0) 收藏
Sudoku Killer Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会 ...
- HDU 6143 - Killer Names | 2017 Multi-University Training Contest 8
/* HDU 6143 - Killer Names [ DP ] | 2017 Multi-University Training Contest 8 题意: m个字母组成两个长为n的序列,两序列中 ...
- Steam 游戏 《Sudoku Universe(数独宇宙)》、《Sudoku Killer(数独杀手)》、《Sudoku Jigsaw(数独拼图)》数字位置解析 ---------C# 数独程序解析(2020年寒假小目标11)
日期:2020.02.11 博客期:151 星期二 今天,准备肝一个 C# 的数独读写工具(汇编语言也在努力学习命令方法中...),这三个游戏我早就买下了,一直放在 Steam 库里积灰,看着它的成就 ...
随机推荐
- MapKit的使用显示当前位置
1.添加MapKit.framework框架 ,在plist中添加字段,用于,获取用户当前位置设置 NSLocationAlwaysUsageDescription 2.代码 #import &quo ...
- cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建
一.场景与层的关系: cocos2dx的框架可以说主要由导演,场景,层,精灵来构成: 1.其中导演,意如其名,就是操控整个游戏的一个单例,管理着整个游戏. 2.场景就像电影的一幕剧情,所以说,懂得如何 ...
- LoadRunner 脚本学习 -- 随机函数运用
直接上码 Action() { int randnum; randnum = rand()%+; lr_output_message("随机得到的数是:%d", randnum); ...
- java判断字符串是否为数字或中文或字母
个人认为最好的方法 *各种字符的unicode编码的范围: * 汉字:[0x4e00,0x9fa5](或十进制[19968,40869]) * 数字:[0x30,0x39](或十进制 ...
- Centos系统上安装VNC view
一.安装 VNC 默认情况下,CentOS 6.4 是没有安装的,检查是否安装,输入: [root@localhost ~]# rpm -q vnc vnc-server package vnc is ...
- Spring事务解析4-切面织入
BeanFactoryTransactionAttributeSourceAdvisor作为Advisor的实现类,自然要遵从Advisor的处理方式,当代理被调用时会调用这个类的增强方法,也就是此b ...
- 07 JavaWeb
软件开发的两种架构:c/s和b/s * C/S client/server 客户端/服务器 例子:QQ 快播 暴风影音... ...
- js与jquery异同
大家都知道jquery是js的一个库,很多东西大多数简写了,让js写起来特别的方便.但是对与学习的人来说,最好是先学会了js再去学jquery会更好.在学得过程中你会发现两者实现的原理是差不多的,但是 ...
- 在Windows宿主机中连接虚拟机中的Docker容器
1. 简单拓扑图
- 餐厅点餐APP总结
总结:经过这几个月的时间里,我们通过学习.讨论一起做出了餐厅点餐这个APP,我们在做这个APP的过程中,每个人都有自己的想法,也通过讨论最后做出了这个app,虽然做的不是很好,但是我们也尽自己的努力尽 ...