【搜索】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 ...
随机推荐
- 9、MySQL常见的函数?
请参考下面的博客文章: MySQL常见的函数
- MSSQL 错误:在将 varchar 值 '1,2,3,5,6' 转换成数据类型 int 时失败。
MSSQL 错误:在将 varchar 值 '1,2,3,5,6' 转换成数据类型 int 时失败.
- vue_使用npm搭建vue2.0脚手架开发环境
前言: 在使用vue进行开发时需要搭建vue的运行环境,这里主要是使用淘宝镜像cnpm进行搭建vue的脚手架开发环境.主要是分为mac和window两个版本,两个环境的搭建都是大同小异. mac开发环 ...
- linux之cron定时任务介绍
前言 linux系统有一个专门用来管理定时任务的进程cron,一般是设置成开机自启动的,通过添加任务可以让服务器定时执行某些任务. cron介绍 linux系统有一个专门用来管理定时任务的进程cron ...
- [Leetcode Week15] Add Two Numbers
Add Two Numbers 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/add-two-numbers/description/ Descrip ...
- abp 调试
概要 研究Abp(ASP.NET Boilerplate)框架有几个月了,从一遍遍的看官方文档,到现在看源码,一路走来学习了很多知识. 很多新手都很关心源码如何调试,我也是如此,在反复看Debuggi ...
- c json实战引擎四 , 最后❤跳跃
引言 - 以前那些系列 长活短说, 写的最终 scjson 纯c跨平台引擎, 希望在合适场景中替代老的csjon引擎, 速度更快, 更轻巧. 下面也是算一个系列吧. 从cjson 中得到灵感, 外加 ...
- Linux系统编程——进程间通信(一)
基本操作命令: ps -ajx/-aux/-ef 查看进程间状态/的相互关系 top 动态显示系统中的进程 nice 按照指定的优先级运行 /renice 改变正在运行的进程的优先级 kill -9杀 ...
- leetcode 141 142. Linked List Cycle
题目描述: 不用辅助空间判断,链表中是否有环 /** * Definition for singly-linked list. * struct ListNode { * int val; * Lis ...
- 12:django 模板 内建过滤器
django 模板 内建过滤器 add{{ value|add:"2" }} 对象的加法,如果都是整数类型,简单的算术加法:如果是列表,则是列表的相加 如果无法执行对象的相加,比如 ...