博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HDOJ】1175 连连看
阅读量:6489 次
发布时间:2019-06-24

本文共 2657 字,大约阅读时间需要 8 分钟。

BFS。wa了一下午,原来是YES,写成了Yes。

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 typedef struct node_st{ 8 int x, y; 9 int dir;10 int turn;11 node_st() {}12 node_st(int xx, int yy, int ddir, int tturn) {13 x = xx; y = yy; dir = ddir; turn = tturn;14 }15 } node_st;16 17 int map[1005][1005];18 int n, m;19 int dirs[4][2] = {
{
0,1},{
0,-1},{
1,0},{-1,0}};20 char turns[1005][1005];21 22 bool bfs(int bx, int by, int ex, int ey) {23 queue
que;24 bool val = false;25 node_st node;26 int x, y, dir, turn;27 28 memset(turns, 0, sizeof(turns));29 turns[bx][by] = 1;30 que.push(node_st(bx, by, -1, 0));31 32 while ( !que.empty() ) {33 node = que.front();34 //printf("x=%d, y=%d, dir=%d, turn=%d\n", node.x, node.y, node.dir, node.turn);35 if (node.x == ex && node.y == ey) {36 val = true;37 break;38 }39 que.pop();40 for (int i=0; i<4; ++i) {41 x = node.x + dirs[i][0];42 y = node.y + dirs[i][1];43 dir = i;44 turn = node.turn;45 if (x<1 || x>n || y<1 || y>m)46 continue;47 if (map[x][y] && (x!=ex || y!=ey))48 continue;49 if (dir!=node.dir && node.dir!=-1)50 ++turn;51 //printf("\tx=%d, y=%d, dir=%d, turn=%d\n", x, y, dir, turn);52 if (turn > 2)53 continue;54 if (turns[x][y]==0 || turn+1 <= turns[x][y]) {55 turns[x][y] = turn+1;56 que.push(node_st(x, y, dir, turn));57 }58 }59 }60 61 return val;62 }63 64 int main() {65 int q, x1, x2, y1, y2;66 int i, j;67 68 while (scanf("%d %d", &n, &m)!=EOF && (n||m)) {69 for (i=1; i<=n; ++i)70 for (j=1; j<=m; ++j)71 scanf("%d", &map[i][j]);72 scanf("%d", &q);73 while (q--) {74 scanf("%d %d %d %d", &x1, &y1, &x2, &y2);75 if (x1==x2 && y1==y2) {76 printf("NO\n");77 continue;78 }79 if (map[x1][y1]!=map[x2][y2] || map[x1][y1]==0 || map[x2][y2]==0) {80 printf("NO\n");81 continue;82 }83 if ( bfs(x1, y1, x2, y2) )84 printf("YES\n");85 else86 printf("NO\n");87 }88 }89 90 return 0;91 }

 

 

转载于:https://www.cnblogs.com/bombe1013/p/3704195.html

你可能感兴趣的文章
Java内部DNS查询实现和参数设置
查看>>
MySQL批量SQL插入性能优化
查看>>
0c-37-ARC
查看>>
图像的 SNR 和 PSNR 的计算
查看>>
图像边缘检测——Sobel算子
查看>>
【并发编程】延时初始化
查看>>
Android用路径api在内部存储读写文件
查看>>
PHP 实现对象的持久层,数据库使用MySQL
查看>>
Freemarker生成静态代码实例
查看>>
Ural 2036. Intersect Until You're Sick of It 计算几何
查看>>
视差效果原理 background-attachment:fixed
查看>>
【读书笔记《Bootstrap 实战》】5.电子商务网站
查看>>
PHP中“简单工厂模式”实例讲解
查看>>
SparkConf加载与SparkContext创建(源码阅读一)
查看>>
使用ffmpeg录音
查看>>
微信养号教程预防封号
查看>>
模2运算的原理 模2加法,模2减法,模2乘法,模2除法
查看>>
Couchbase的安装步骤
查看>>
Python:版本升级
查看>>
Python爬网获取全国各地律师电话号
查看>>