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 "连连看"相信很多人都玩过.没玩过也没关系, ...
随机推荐
- Nginx学习笔记(八) Nginx进程启动分析
Nginx进程启动分析 worker子进程的执行循环的函数是ngx_worker_process_cycle (src/os/unix/ngx_process_cycle.c). 其中,捕获事件.分发 ...
- 使用window2003安装邮件服务器最新实际操作记录
关于使用windows 2003自带的服务组件来安装简单的pop3 协议邮件服务器网上教程很多,可以搜索出来,就是安装IIS选中smtp和添加window是组件的应用程序服务器,这点这里不多说. 安装 ...
- Chrome浏览器在Windows8/8.1下显示模糊的解决办法
刚刚换了一台新电脑,安装完Windows 8.1,屏幕分辨率被自动设置为1920 X 1080,打开Chrome浏览器却发现内容显示非常模糊,不论如何改变Chrome的设置均没有效果,开启或关闭Chr ...
- 更新日志 - fir.im 回归,上线 Android Studio 插件
上周 fir.im 经历了一场前所未有的挑战,因为自查应用网站暂停,在事情发生4天内我们完成了自查,fir.im 正式回归.煎熬的 98 个小时,感谢开发者与用户对我们的信任和支持. 使用注意: 禁止 ...
- 从头学Android之Android布局管理:LinerLayout线性布局
LinerLayout线性布局: 这种布局方式是指在这个里面的控件元素显线性,我们可以通过setOrientation(int orientation)来指定线性布局的显示方式,其值有:HORIZON ...
- linux进程监控,monitor脚本
由于服务器上一些进程莫名的挂掉,需要些一个monitor的bash脚本来监控这些进程: #! /bin/bash #chkconfig info ### BEGIN INIT INFO # Provi ...
- 将数据导出到Excel2007格式。
增加数据格式 public static void TableToExcel2(DataTable table, string filename, string sheetname) { XSSFWo ...
- 磁盘阵列RAID原理、种类及性能优缺点对比
磁盘阵列(Redundant Arrays of Independent Disks,RAID) 1. 存储的数据一定分片: 2. 分基于软件的软RAID(如mdadm)和基于硬件的硬RAID(如RA ...
- Revit中绘制带坡度管道
激活管道绘制命令出现绘制管道上下文菜单,可以根据需要设置管道坡度值,是向上坡度还是向下坡度,其中两个命令非常有用,一个是继承高程,一个是忽略坡度以连接.在Revit建模中尝尝碰到一些带有坡度的管道,比 ...
- 努力学习 HTML5 (2)—— 元素的增和删
HTML5 放松了某些规则,HTML5 的制定者想让这门语言更紧密地反映浏览器的现实. 放松的规则 不要求包含 <html>.<head> 和 <body> 元素. ...