hdu 1175 连连看 DFS
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175
解题思路:从出发点开始DFS。出发点与终点中间只能通过0相连,或者直接相连,判断能否找出这样的路径。
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define N 1005
#define M 1005
int map[N][M],n,m;
bool vis[N][M],ok;
int move[][]={{,},{-,},{,},{,-}};
void can(int x,int y,int l1,int l2,int time,int last)//time记录已经转过几次弯
{
int i,xx,yy;
if(ok)
return;
if(time>)
return;
for(i=;i<&&ok==false;i++)
{
xx=x+move[i][];
yy=y+move[i][];
if(xx>&&xx<=n&&yy>&&yy<=m)
{
if(xx==l1&&yy==l2)
{
if(time<){
ok=true;return;
}
else if(i==last)
{
ok=true;return;
}
}
if(map[xx][yy]==&&!vis[xx][yy])
{
vis[xx][yy]=true;
if(i==last)
can(xx,yy,l1,l2,time,last);
else
can(xx,yy,l1,l2,time+,i);
vis[xx][yy]=false;
}
}
}
return;
}
int main()
{
// freopen("in.in","r",stdin);
int k,i,j;
while(scanf("%d%d",&n,&m),n+m)
{
for(i=;i<=n;i++)
for(j=;j<=m;j++)
scanf("%d",&map[i][j]);
scanf("%d",&k);
int x,y,l1,l2;
while(k--)
{
ok=false;
scanf("%d%d%d%d",&x,&y,&l1,&l2);
if(map[x][y]!=map[l1][l2])
ok=false;
else if(map[x][y]==)
ok=false;
else
{
if((((x+)==l1||(x-)==l1)&&l2==y)||((y-)==l2||(y+)==l2)&&x==l1)
ok=true;
else
{
memset(vis,false,sizeof(vis));
int tt,rr;
for(i=;i<&&ok==false;i++)
{
tt=x+move[i][];
rr=y+move[i][];
if(tt>&&tt<=n&&rr>&&rr<=m&&map[tt][rr]==&&!vis[tt][rr]){
vis[tt][rr]=true;
can(tt,rr,l1,l2,,i);//i记录该步走的方向
vis[tt][rr]=false;
}
}
}
}
if(ok)
printf("YES\n");
else
printf("NO\n");
}
}
return ;
}
hdu 1175 连连看 DFS的更多相关文章
- HDU 1175 连连看 (DFS+剪枝)
<题目链接> 题目大意:在一个棋盘上给定一个起点和终点,判断这两点是否能通过连线连起来,规定这个连线不能穿过其它的棋子,并且连线转弯不能超过2次. 解题分析:就是DFS从起点开始搜索,只不 ...
- HDU 1175 连连看(超级经典的bfs之一)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1175 连连看 Time Limit: 20000/10000 MS (Java/Others) ...
- hdu 1175(BFS&DFS) 连连看
题目在这里:http://acm.hdu.edu.cn/showproblem.php?pid=1175 大家都很熟悉的连连看,原理基本就是这个,典型的搜索.这里用的是广搜.深搜的在下面 与普通的搜索 ...
- Hdu 1175 连连看(DFS)
Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=1175 因为题目只问能不能搜到,没问最少要几个弯才能搜到,所以我采取了DFS. 因为与Hdu ...
- HDU - 1175 连连看 【DFS】【BFS】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1175 思路 这种题一想到就用搜索, 但是内存是32m 用 bfs 会不会MLE 没错 第一次 BFS的 ...
- hdu - 1728逃离迷宫 && hdu - 1175 连连看 (普通bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 这两道题花了一下午的时候调试,因为以前做过类似的题,但是判断方向的方法是错的,一直没发现啊,真无语. 每个 ...
- hdu 1175 连连看 (深搜)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 题目大意:如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子)这样的两个棋子可以 ...
- HDU 1175 连连看 (深搜+剪枝)
题目链接 Problem Description "连连看"相信很多人都玩过.没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子.如果某两个相同的棋子,可以 ...
- hdu 1175 连连看 DFS_字节跳动笔试原题
转载至:https://www.cnblogs.com/LQBZ/p/4253962.html Problem Description "连连看"相信很多人都玩过.没玩过也没关系, ...
随机推荐
- 国际化 native2ascii用法
cmd下输入: native2ascii -encoding GBK(需要编译成哪种语言) (中文文件路劲) (英文文件路劲) 其他固定 例如 native2ascii -encoding GBK C ...
- SQL SERVER 存储过程基础
一.注释 -- 单行注释,从这到本行结束为注释,类似C++,c#中// /* … */ 多行注释,类似C++,C#中/* … */ 二.变量 (int, smallint, tinyint, deci ...
- iOS中webView加载URL需要处理特殊字符
今天在项目中遇到webView加载URL时,因为URL中有特殊字符,导致页面无法加载,而且在- (BOOL)webView:(UIWebView )webView shouldStartLoadWit ...
- 在WinForm应用程序中,使用选项卡控件来加载不同的Form界面!
TabPage tp=new TabPage(); your选项卡控件.Controls.Add(tp); From1 frm=new Form1(); frm.TopLevel = false; f ...
- 内置方法+lambda是pythonic的利器
python可以写的非常简洁,通过使用内置的map,reduce,filter,lambda方法,非常具有文艺范. 举个例子,例如 def fromIpToNum(ipAddr): return ...
- js submit的問題
form 里面有input name="submit"的时候 $('#seachform').submit();不起作用
- Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)
Centos下安装配置LAMP(Linux+Apache+MySQL+PHP) 关于LAMP的各种知识,还请大家自行百度谷歌,在这里就不详细的介绍了,今天主要是介绍一下在Centos下安装,搭建一 ...
- 通过Java代码浅谈HTTP协议
最近刚看了http协议,想写点东西加深一下理解,如果哪儿写错了,请指正. 1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(W ...
- odoo view field option, action flage 参数
options JSON object specifying configuration option for the field's widget (including default widget ...
- unix 环境高级编程-读书笔记与习题解答-第二篇
第四节 输入与输出 上次的笔记中写到的 open, read, write, lseek 以及close ,都是不带缓存的IO函数,这些函数都使用文件描述符进行工作. 上一篇笔记用到的 read(ST ...