HDU 1175 连连看(BFS)
连连看
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13730 Accepted Submission(s): 3579
玩家鼠标先后点击两块棋子,试图将他们消去,然后游戏的后台判断这两个方格能不能消去。现在你的任务就是写这个后台程序。
注意:询问之间无先后关系,都是针对当前状态的!
# include<stdio.h>
# include<string.h>
# include<queue>
using namespace std;
int map[][];
int vis[][];
int n,m;
struct Node{
int x,y,dir,times; //dir表示方向 ,times表示转弯的次数
}st,en; queue<Node>q;
int dx[]={-,,,};
int dy[]={,-,,};
bool ismap(int x,int y){
if(x< || y< || x>n ||y>m)
return false;
return true;
}
void BFS(){
memset(vis,,sizeof(vis));
while(!q.empty()) q.pop();
vis[st.x][st.y] = ;
q.push(st);
bool tmp = false;
int i;
while(!q.empty()){
Node a = q.front(); q.pop();
if(a.x == en.x && a.y ==en.y){
tmp = true;
break;
}
for(i=;i<;i++){
Node b;
b.x = a.x + dx[i];
b.y = a.y + dy[i];
b.dir = i;
b.times = a.times;
if(!(a.dir==-||a.dir+b.dir==||a.dir==b.dir)) //a.dir+b.dir==3表示转180度的弯
b.times = a.times + ;
if(!ismap(b.x,b.y)) continue;
if(vis[b.x][b.y]) continue;
if(map[b.x][b.y] && !(b.x==en.x&&b.y==en.y)) continue; //很重要,如果不是空格子并且不是终点
if(b.times > ) continue;
vis[b.x][b.y] = ;
q.push(b);
}
}
if(tmp)
puts("YES");
else
puts("NO");
}
int main()
{
while(scanf("%d%d",&n,&m)&&n&&m){
int i,j,T;
for(i=;i<=n;i++)
for(j=;j<=m;j++)
scanf("%d",&map[i][j]);
scanf("%d",&T);
while(T--){
scanf("%d%d%d%d",&st.x,&st.y,&en.x,&en.y);
st.times = ; st.dir = -;
if(map[st.x][st.y] != map[en.x][en.y])
puts("NO");
else if(map[st.x][st.y] == || map[en.x][en.y] == )
puts("NO");
else
BFS();
}
}
return ;
}
BFS中,用到queue,如果头文件里边没有using namespace std;这句话,在VC里边会编译出错,郁闷。。。
HDU 1175 连连看(BFS)的更多相关文章
- 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】【BFS】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1175 思路 这种题一想到就用搜索, 但是内存是32m 用 bfs 会不会MLE 没错 第一次 BFS的 ...
- HDU 1175 连连看【BFS】
题意:给出起点和终点的棋子,不能经过别的棋子,而且转弯的次数不能超过2次,问能否消除 和逃离迷宫一样,每个节点记录下来它的当前的方向和转弯的次数,再搜 注意特判起点的棋子和终点的棋子为0或者不一样的情 ...
- HDU 1175 连连看
连连看 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- 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 连连看 (深搜+剪枝)
题目链接 Problem Description "连连看"相信很多人都玩过.没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子.如果某两个相同的棋子,可以 ...
- hdu 1175 连连看 (深搜)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 题目大意:如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子)这样的两个棋子可以 ...
随机推荐
- 问题-[WIN8.132位系统]安装Win8.1 遇到无法升级.NET Framework 3.5.1
问题现象:安装Win8后都遇到了无法升级.NET Framework 3.5.1的问题,在线升级会遇到错误0x800F0906.这使得91手机助手等很多软件无法运行,更郁闷的是,网上几乎所有的解决办法 ...
- JSON基本操作
import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.J ...
- Spring Framework 5.0.0.M3中文文档 翻译记录 introduction
翻译自: http://docs.spring.io/spring/docs/5.0.0.M3/spring-framework-reference/htmlsingle/#spring.tld.ha ...
- Identity-第三章 Authorize原理解析
本篇旨在解析Identity中角色限制的原理. 需要的工具:Visual Studio.Reflector 问题提出: 1.当我们需要限制某个Controller的名称只需要某个或者某几个角色访问,这 ...
- 【转】浅谈HTTP中Get与Post的区别
转自:http://www.cnblogs.com/hyddd Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以 ...
- MySQL参数优化
目前针对MySQL数据库进行了一些参数优化,具体如下: my.ini / my.cnf 参数说明 #使用查询缓存 query_cache_size=100M # ...
- [Javascript] Gradient Fills on the HTML5 Canvas
window.onload = function() { var canvas = document.getElementById("canvas"), context = can ...
- oracle数据库导入导出的dmp(转)
window下: imp必须要dba用户,所以用sysdba用户登陆,然后给予chnlmgr用户dba权限 grant connect,resource,dba to chnlmgr; 全部导入 im ...
- mysql导出部分(指定)数据库表字段
需要导出某个表中的部分字段信息 之前导出数据库表一直使用mysqldump命令,例如: mysqldump -hIP -uroot -P3306 -p 库 表 > 名字.sql 但是如果导出 ...
- Android 自定义View修炼-仿QQ5.0 的侧滑菜单效果的实现
有一段时间没有写博客了,最近比较忙,没什么时间写,刚好今天有点时间, 我就分享下,侧滑菜单的实现原理,一般android侧滑的实现原理和步骤如下:(源码下载在下面最后给出哈) 1.使用ViewGrou ...