【搜索】bzoj3109 [cqoi2013]新数独

搜索,没什么好说的。要注意读入。
#include<cstdio>
#include<cstdlib>
using namespace std;
const int num[][]=
{{,,,,,,,,,},
{,,,,,,,,,},
{,,,,,,,,,},
{,,,,,,,,,},
{,,,,,,,,,},
{,,,,,,,,,},
{,,,,,,,,,},
{,,,,,,,,,},
{,,,,,,,,,},
{,,,,,,,,,}};
int map[][][][],vish[][],visl[][],visn[][],chess[][],h=,l=;
char s[];
void Read()
{
for(int k=;k<=;k++)
{
for(int j=;j<=;j++)
{
for(int i=;i<=;i++)
{
scanf("%s",s);
map[h][l][h][l-]= ( s[]=='>' ? - : );
scanf("%s",s);
map[h][l+][h][l]= ( s[]=='<' ? : - );
l+=;
}
for(int i=;i<=;i++)
{
scanf("%s",s);
map[h+][i][h][i]= ( s[]=='v' ? - : );
}
h++;l=;
}
for(int i=;i<=;i++)
{
scanf("%s",s);
map[h][l][h][l-]= ( s[]=='>' ? - : );
scanf("%s",s);
map[h][l+][h][l]= ( s[]=='<' ? : - );
l+=;
}
h++;l=;
}
}
void print()
{
for(int i=;i<=;i++)
{
for(int j=;j<;j++)
printf("%d ",chess[i][j]);
printf("%d\n",chess[i][]);
}
}
bool check(const int &X,const int &Y,const int &Val)
{
if(map[X][Y][X][Y-]==)
if(Val<=chess[X][Y-])return false;
if(map[X][Y][X][Y-]==-)
if(Val>=chess[X][Y-])return false;
if(map[X][Y][X-][Y]==)
if(Val<=chess[X-][Y])return false;
if(map[X][Y][X-][Y]==-)
if(Val>=chess[X-][Y])return false;
return true;
}
void dfs(int x,int y)
{
if(x==)
{
print();
exit();
}
for(int i=;i<=;i++)
if(!vish[x][i]&&!visl[y][i]&&!visn[num[x][y]][i])
if(check(x,y,i))
{
chess[x][y]=i;
vish[x][i]=visl[y][i]=visn[num[x][y]][i]=true;
if(y==)
dfs(x+,);
else
dfs(x,y+);
vish[x][i]=visl[y][i]=visn[num[x][y]][i]=false;
}
}
int main()
{
Read();
dfs(,);
return ;
}
【搜索】bzoj3109 [cqoi2013]新数独的更多相关文章
- BZOJ3109: [cqoi2013]新数独
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3109 搜索一遍.读入注意一下.. #include<cstring> #inclu ...
- B3109 [cqoi2013]新数独 搜索dfs
就是基于普通数独上的一点变形,然后就没什么了,普通数独就是进行一边dfs就行了. 题干: 题目描述 输入格式 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第 ...
- 3109. [CQOI2013]新数独【DFS】
Description Input 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v). Output 输出包含9行,每行 ...
- CQOI2013 新数独
传送门 这道题也是很暴力的搜索啊…… 因为数独一开始全是空的,只有许许多多的大小限制条件,那也没必要纠结从哪开始搜索了,直接暴力搜索之后判断一下是否合法. 这题最恶心的是读入.现学了一招判断点在哪个块 ...
- bzoj 3109: [cqoi2013]新数独
#include<cstdio> #include<iostream> using namespace std; ][],li[][],xi[][],a[][],bh[][], ...
- bzoj 3109: [cqoi2013]新数独【dfs】
按3x3的小块dfs,填数的时候直接满足所有条件即可 #include<iostream> #include<cstdio> #include<cstring> u ...
- bzoj3109【CQOI2013】新数独
3109: [cqoi2013]新数独 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 365 Solved: 229 [Submit][Statu ...
- BZOJ3105: [cqoi2013]新Nim游戏 博弈论+线性基
一个原来写的题. 既然最后是nim游戏,且玩家是先手,则希望第二回合结束后是一个异或和不为0的局面,这样才能必胜. 所以思考一下我们要在第一回合留下线性基 然后就是求线性基,因为要取走的最少,所以排一 ...
- BZOJ3105: [cqoi2013]新Nim游戏
题解: 线性基?类似于向量上的基底. 此题题解戳这里:http://blog.csdn.net/wyfcyx_forever/article/details/39477673 代码: #include ...
随机推荐
- javascript中数据属性与访问器属性
1.数据属性 Configurable:true|false,表示能否通过delete将属性删除,默认为true.当把属性的Configurable设置为false后,该属性不能通过delete删除, ...
- printk %pF %pS含义【转】
作者:啐楼链接:https://www.zhihu.com/question/37769890/answer/73532192来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- linux===Ubuntu修改设备名称
step1 sudo vim /etc/hostname 修改你需要的,保存退出 step2 sudo vim /etc/hosts 修改你需要的,保存退出 step3 reboot
- 集合类---Map
Map常用的子类: 一.HashMap详解 1.特点 1)线程不安全.如果想要得到线程安全的HashMap,可以使用Collections的静态方法:Map map = Collections.sy ...
- c++ ui 库
Dulib 比较流行的direct ui 界面框架 UIStone 据说金山词霸用着,查询资料甚少 DirectUI qq使用了据说,多学习学习吧 基于directUI的dulib不错 c盘没空间,运 ...
- maven使用备忘
maven的所有功能本质上都是通过插件来实现的所有的功能.archetype插件就是根据项目类型创建项目的插件.执行archetype:generate命令就会list一系列的项目类型,可以选择一个合 ...
- iframe的一些介绍
iframe 元素会创建包含另外一个文档的内联框架(即行内框架) 提示:您可以把需要的文本放置在 <iframe> 和 </iframe> 之间,这样就可以应对无法理解 ifr ...
- Linux下批量Kill多个进程的方法
转自http://www.jb51.net/LINUXjishu/43534.html ps -ef|grep tt.py|grep -v grep|cut -c 9-15|xargs kill -9 ...
- html,js一个元素做两次不同点击事件
业务需求:一个按钮,第一次点击,修改页面内容,第二次点击,提交修改. 刚开始,我绑定了第一个click事件,用于让右边的内容可编辑.如:$('#id').click(function(){...}); ...
- git clone命令
从远程clone一个仓库 ...知识浅薄 git clone都发现貌似用的不顺 因为我有几个git账号 但是我也不知道就是git账号是怎么保存在终端上的 所以当我需要用一个新的github账号来clo ...