HDU 1175 连连看
连连看
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 14418 Accepted Submission(s): 3778
玩家鼠标先后点击两块棋子,试图将他们消去,然后游戏的后台判断这两个方格能不能消去。现在你的任务就是写这个后台程序。
注意:询问之间无先后关系,都是针对当前状态的!
#include <stdio.h> typedef struct
{
int aim;
int x;
int y;
}Qu;
Qu Queue[];//队列
int Map[][];//数字矩阵
int Time[][];//到达某个位置的次数
int move[][]={,,-,,,-,,};
int x1,y1,x2,y2;
int m,n,t; int BFS()
{
int i;
int I,J;
int time;
int rear,front;
rear=front=-;
rear++;
Time[x1][y1]=;
Queue[rear].aim=;
Queue[rear].x=x1;
Queue[rear].y=y1;
while(rear>front)
{
front++;
//找到返回1
if(Queue[front].x==x2 && Queue[front].y==y2)
{
return ;
}
//四个方向搜索
for(i=;i<;i++)
{
I=Queue[front].x+move[i][];
J=Queue[front].y+move[i][];
if((!Map[I][J] || I==x2 && J==y2) && I> && J> && I<=m && J<=n)
{
//开始的方向和现在的方向不同则次数加一
if(Queue[front].aim && Queue[front].aim!=i+)
{
time=Time[Queue[front].x][Queue[front].y]+;
}
else
{
//!Queue[front].aim代表没有转弯
if(!Queue[front].aim || Queue[front].aim==i+)
{
time=Time[Queue[front].x][Queue[front].y];
}
}
//如果当前到达某个数字的转弯次数少于以前的次数,则将该数字的位置如队列,并更新次数
if(Time[I][J]>=time && time<)
{
rear++;
Queue[rear].aim=i+;//方向为当前的方向
Queue[rear].x=I;
Queue[rear].y=J;
Time[I][J]=time;//更新次数
}
}
}
}
return ;
} int main()
{
int i,j,k;
while()
{
scanf("%d %d",&m,&n);
if(!m && !n)
{
break;
}
for(i=;i<=m;i++)
{
for(j=;j<=n;j++)
{
scanf("%d",&Map[i][j]);
}
}
scanf("%d",&t);
for(i=;i<t;i++)
{
for(j=;j<=m;j++)
{
for(k=;k<=n;k++)
{
Time[j][k]=;//次数初始化为无穷大
}
}
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
if(!Map[x1][y1] || !Map[x2][y2] || (Map[x1][y1]!=Map[x2][y2]))
{
printf("NO\n");
continue;
}
if(BFS() || (x1==x2 && y1==y2))
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
}
return ;
}
HDU 1175 连连看的更多相关文章
- HDU 1175 连连看(超级经典的bfs之一)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1175 连连看 Time Limit: 20000/10000 MS (Java/Others) ...
- hdu - 1728逃离迷宫 && hdu - 1175 连连看 (普通bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 这两道题花了一下午的时候调试,因为以前做过类似的题,但是判断方向的方法是错的,一直没发现啊,真无语. 每个 ...
- hdu 1175 连连看 DFS
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 解题思路:从出发点开始DFS.出发点与终点中间只能通过0相连,或者直接相连,判断能否找出这样的路 ...
- Hdu 1175 连连看(DFS)
Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=1175 因为题目只问能不能搜到,没问最少要几个弯才能搜到,所以我采取了DFS. 因为与Hdu ...
- hdu 1175 连连看 (深搜)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 题目大意:如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子)这样的两个棋子可以 ...
- HDU - 1175 连连看 【DFS】【BFS】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1175 思路 这种题一想到就用搜索, 但是内存是32m 用 bfs 会不会MLE 没错 第一次 BFS的 ...
- HDU 1175 连连看(BFS)
连连看 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- HDU 1175 连连看 (深搜+剪枝)
题目链接 Problem Description "连连看"相信很多人都玩过.没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子.如果某两个相同的棋子,可以 ...
- hdu 1175 连连看 DFS_字节跳动笔试原题
转载至:https://www.cnblogs.com/LQBZ/p/4253962.html Problem Description "连连看"相信很多人都玩过.没玩过也没关系, ...
随机推荐
- [Java Web] 4、JavaScript 简单例子(高手略过)
内容概览: JavaScript简介 JavaScript的基本语法 JavaScript的基本应用 JavaScript的事件处理 window对象的使用 JavaScript简介: JavaScr ...
- 云端持续集成——AppVeyor拥抱GitHub
想着你正在做一个网站 终于大功告成了,提交了代码后,你按下了开发环境的Build菜单,一杯咖啡后,Build Succeed,然后连接服务器,开始部署 当你乐滋滋的享受着你的开发成果时,突然发现了一个 ...
- Microsoft Azure开发体验 – 网络报名系统
去年底RP好抢到了中国版Azure的使用机会,最近社团里讨论到9月份招新的问题,就用Azure Website和Azure Table Storage打造了这个报名系统. 网站放在 http://jo ...
- 为什么不能把委托(delegate)放在一个接口(interface)当中?
stackoverflow上有人问,为什么不能把委托放在一个接口当中? 投票最多的第一个答案第一句话说,“A Delegate is just another type, so you don't g ...
- ASP.NET 5系列教程 (三):view components介绍
在ASP.NET MVC 6中,view components (VCs) 功能类似于虚拟视图,但是功能更加强大. VCs兼顾了视图和控制器的优点,你可以把VCs 看作一个Mini 控制器.它负责控制 ...
- 基于D3JS绘制中国地图
仿照D3JS官网上的美国地图制作了一个中国版的地图. D3JS官网上的版本: http://bl.ocks.org/NPashaP/a74faf20b492ad377312 中国版的地图效果: 如要制 ...
- Android 动态获取ListView的高度
public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = l ...
- Windows Error Code(windows错误代码详解)
0 操作成功完成. 1 功能错误. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 拒绝访问. 6 句柄无效. 7 存储控制块被损坏. 8 存储空间不足,无法处理此 ...
- HTML5手机APP开发入(4)
HTML5手机APP开发入(4) 课程内容 完成一个自定义的Component用来展现通讯录用户的明细信息如下图 http://bootsnipp.com/snippets/featured/prof ...
- 了解 JavaScript (5)– 翻转器(rollover)
用 JavaScript 最常用的效果就是,当用户将鼠标移动到图片上时,会改变网页上的图像,这样页面就能对用户的操作及时作出反应,这种称为 翻转器(rollover)效果很容易实现,而且有很多应用场合 ...