题目链接: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的更多相关文章

  1. HDU 1175 连连看 (DFS+剪枝)

    <题目链接> 题目大意:在一个棋盘上给定一个起点和终点,判断这两点是否能通过连线连起来,规定这个连线不能穿过其它的棋子,并且连线转弯不能超过2次. 解题分析:就是DFS从起点开始搜索,只不 ...

  2. HDU 1175 连连看(超级经典的bfs之一)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1175 连连看 Time Limit: 20000/10000 MS (Java/Others)     ...

  3. hdu 1175(BFS&DFS) 连连看

    题目在这里:http://acm.hdu.edu.cn/showproblem.php?pid=1175 大家都很熟悉的连连看,原理基本就是这个,典型的搜索.这里用的是广搜.深搜的在下面 与普通的搜索 ...

  4. Hdu 1175 连连看(DFS)

    Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=1175 因为题目只问能不能搜到,没问最少要几个弯才能搜到,所以我采取了DFS. 因为与Hdu ...

  5. HDU - 1175 连连看 【DFS】【BFS】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1175 思路 这种题一想到就用搜索, 但是内存是32m 用 bfs 会不会MLE 没错 第一次 BFS的 ...

  6. hdu - 1728逃离迷宫 && hdu - 1175 连连看 (普通bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1728 这两道题花了一下午的时候调试,因为以前做过类似的题,但是判断方向的方法是错的,一直没发现啊,真无语. 每个 ...

  7. hdu 1175 连连看 (深搜)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 题目大意:如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子)这样的两个棋子可以 ...

  8. HDU 1175 连连看 (深搜+剪枝)

    题目链接 Problem Description "连连看"相信很多人都玩过.没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子.如果某两个相同的棋子,可以 ...

  9. hdu 1175 连连看 DFS_字节跳动笔试原题

    转载至:https://www.cnblogs.com/LQBZ/p/4253962.html Problem Description "连连看"相信很多人都玩过.没玩过也没关系, ...

随机推荐

  1. String or binary data would be truncated. The statement has been terminated.

    常见的情况为:插入的值大于字段定义的最大长度. String or binary data would be truncated. The statement has been terminated

  2. maven项目下tomcat直接启动不了(LifecycleException)。报错如下截图

    经查,tomcat项目下的lib中没有jar包,发布的时候没有将jar包发布上去.这个问题在我的博客中以前遇到过.如何将maven的jar发布到项目中,我的博客里面有记载

  3. HibernateTool的安装和使用(Eclipse中)

    http://blog.sina.com.cn/s/blog_919273e20101g1t7.html

  4. 《zip命令》-linux命令五分钟系列之九

    本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc 希望您能通过捐款的方式支持Linux大棚博客的运行和发展.请见“关于捐款” == ...

  5. html 标签的嵌套规则

    1. 块元素可以包含内联元素或某些块元素,但内联元素却不能包含块元素,它只能包含其它的内联元素: <div><h1></h1><p></p> ...

  6. sql server 数据分页显示。

    select [ID] ,[StockApplyCode] ,[RcCode] ,[LabCenterCode] ,[LabGroupCode] ,[LabGroupName] ,[Barcode] ...

  7. NPOI使用手册

    HSSFSheet sheet = hssfworkbook.CreateSheet("new sheet"); // Create a row and put some cell ...

  8. php 之 查询 投票练习(0508)

    练习题目: 解题: 方法一: 1. 投票主页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  9. Java中遍历Map的几种方法

      转自: http://blog.csdn.net/wzb56/article/details/7864911 方法分为两类: 一类是基于map的Entry:map.entrySet(); 一类是基 ...

  10. 转:Java程序员最常用的8个Java日志框架

    作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用以及移动应用.然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快地定位bug:在 ...