【HDOJ】1175 连连看
BFS。wa了一下午,原来是YES,写成了Yes。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std; typedef struct node_st{
int x, y;
int dir;
int turn;
node_st() {}
node_st(int xx, int yy, int ddir, int tturn) {
x = xx; y = yy; dir = ddir; turn = tturn;
}
} node_st; int map[][];
int n, m;
int dirs[][] = {{,},{,-},{,},{-,}};
char turns[][]; bool bfs(int bx, int by, int ex, int ey) {
queue<node_st> que;
bool val = false;
node_st node;
int x, y, dir, turn; memset(turns, , sizeof(turns));
turns[bx][by] = ;
que.push(node_st(bx, by, -, )); while ( !que.empty() ) {
node = que.front();
//printf("x=%d, y=%d, dir=%d, turn=%d\n", node.x, node.y, node.dir, node.turn);
if (node.x == ex && node.y == ey) {
val = true;
break;
}
que.pop();
for (int i=; i<; ++i) {
x = node.x + dirs[i][];
y = node.y + dirs[i][];
dir = i;
turn = node.turn;
if (x< || x>n || y< || y>m)
continue;
if (map[x][y] && (x!=ex || y!=ey))
continue;
if (dir!=node.dir && node.dir!=-)
++turn;
//printf("\tx=%d, y=%d, dir=%d, turn=%d\n", x, y, dir, turn);
if (turn > )
continue;
if (turns[x][y]== || turn+ <= turns[x][y]) {
turns[x][y] = turn+;
que.push(node_st(x, y, dir, turn));
}
}
} return val;
} int main() {
int q, x1, x2, y1, y2;
int i, j; while (scanf("%d %d", &n, &m)!=EOF && (n||m)) {
for (i=; i<=n; ++i)
for (j=; j<=m; ++j)
scanf("%d", &map[i][j]);
scanf("%d", &q);
while (q--) {
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
if (x1==x2 && y1==y2) {
printf("NO\n");
continue;
}
if (map[x1][y1]!=map[x2][y2] || map[x1][y1]== || map[x2][y2]==) {
printf("NO\n");
continue;
}
if ( bfs(x1, y1, x2, y2) )
printf("YES\n");
else
printf("NO\n");
}
} return ;
}
【HDOJ】1175 连连看的更多相关文章
- hdoj 1175 连连看
连连看 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- HDU 1175 连连看(超级经典的bfs之一)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1175 连连看 Time Limit: 20000/10000 MS (Java/Others) ...
- HDU 1175 连连看
连连看 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- hdu - 1728逃离迷宫 && hdu - 1175 连连看 (普通bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 这两道题花了一下午的时候调试,因为以前做过类似的题,但是判断方向的方法是错的,一直没发现啊,真无语. 每个 ...
- HDU 1175 连连看(BFS)
连连看 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 ...
- hdoj 1175 (bfs)
题意: 判断两点之间是否可以通过至多有两次转变方向以达到相连,就是平时玩的连连看游戏,但是不能从外面绕过去. 思路:bfs,给每个加入的队列的点添加转变方向次数turn和点当前要走的方向dir属性,起 ...
- HUD 1175 连连看
连连看 Time Limit : 20000/10000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submiss ...
随机推荐
- 响应式框架中,table表头自动换行的解决办法
最近在用bootstrap开发网站,在处理一张table的时候发现,通过PC端查看样式正常,在手机上查看时,因为屏幕小,表格被压缩的厉害,表头和数据变形如下图 后来网上找了一下,发现一个好用的CSS属 ...
- C#数组按值和按引用传递数组区别
C#中,存储数组之类对象的变量并不是实际存储对象本身,而是存储对象的引用.按值传递数组时,程序将变量传递给方法时,被调用方法接受变量的一个副本,因此在被调用时试图修改数据变量的值时,并不会影响变量的原 ...
- C# Flash 图片上传案例(结合网上腾讯头像上传Flash插件)
之前遇到过很多次要上传类似头像图片这种功能需求,这次是要求弄一个flash插件上传图片 感谢主,一个偶然机会在网上找到了一个很好的腾讯头像修改的flash插件:插件下载 这个功能采用Ajax访问支持, ...
- iOS开发——视频播放 待更新……
本文主要实现调用系统自带的播放器,自带的播放器已经做好了屏幕的适配,集成播放,暂停,快进等功能.能够满足基本的视频播放功能及iOS的视频播放的开发. 最后将其简单的封装成一个iOS视频播放工具类. 一 ...
- JS中==和===的区别
1.对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等 2)同类型比较,直接进 ...
- 10.08_逛逛OSC
(1)每天逛逛OSC是我的习惯了. JNative.JACOB.Shrinkwrap API? .Lua.WSO2 Identity Server .JBoss Forge.Bugzilla.Cou ...
- HDU_2156 分数矩阵
Problem Description 我们定义如下矩阵: 1/1 1/2 1/3 1/2 1/1 1/2 1 ...
- caffe源码阅读(2)-Layer
神经网络是由层组成的,深度神经网络就是层数多了.layer对应神经网络的层.数据以Blob的形式,在不同的layer之间流动.caffe定义的神经网络已protobuf形式定义.例如: layer { ...
- jquery 放大图片
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- css3 标题超过长度自动省略号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...