博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杭电2102--A计划(Bfs)
阅读量:6691 次
发布时间:2019-06-25

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

题目:

骑士救公主,迷宫问题。做的时候思路不清晰,一直Wa, 其实就是没搞清楚从posa-->posb无论b是传送门还是路都会耗时1, 只不过经过传送门又传送到了下一个位置;一直在这个误区里走不出来;Tmdi.

bfs搜一遍就说明搜过来就说明posa一定为点,代码中又把特殊情况全部排除,

所以只有两种情况:

         '.' --->'#',

          '.'-->'.'(包含p, 为搜索结束条件),

瞬间明朗了很多啊。

ac代码:

#include 
#include
#include
#include
using namespace std;char map[2][12][12];int ac[4][2] = {
0, 1, 0, -1, -1, 0, 1, 0};int n, m, T;struct Maze{ int x, y, z, step; } r, s, t;bool Bfs(int x, int y, int z){ r.x = x; r.y = y; r.z = z; r.step = 0; queue
q; q.push(r); map[x][y][z] = '*'; while(!q.empty()) { s = q.front(); q.pop(); for(int i = 0; i < 4; i++) { t = s; t.y = s.y + ac[i][0]; t.z = s.z + ac[i][1]; t.step = s.step + 1; if(t.z >= 0 && t.y >= 0 && t.y < n && t.z < m && map[t.x][t.y][t.z] != '*') { if(map[t.x][t.y][t.z] == '#'){ map[t.x][t.y][t.z] = '*'; //标记为'*', 因为后面要标记传送到的地方, 不标记就成了断路; t.x = !s.x; } if(map[t.x][t.y][t.z] == 'P' && t.step <= T) return true; map[t.x][t.y][t.z] = '*'; q.push(t); } } } return false;} int main(){ int Qi; scanf("%d", &Qi); while(Qi--) { scanf("%d %d %d", &n, &m, &T); for(int i = 0; i < 2; i++) for(int j = 0; j < n; j++) for(int k = 0; k < m; k++) cin >> map[i][j][k]; for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) //把不符题意的路全换成'*'; { if(map[0][i][j] == '#' && map[1][i][j] == '#') //上下两层相同位置处都为传送门; { map[0][i][j] = '*'; map[1][i][j] = '*'; } if(map[0][i][j] == '#' && map[1][i][j] == '*') //上下两层相同位置处一层为传送门, 一层为墙; { map[0][i][j] = '*'; } if(map[0][i][j] == '*' && map[1][i][j] == '#')//同上; { map[1][i][j] = '#'; } } if(Bfs(0, 0, 0)) printf("YES\n"); else printf("NO\n"); } return 0; }

 

转载于:https://www.cnblogs.com/soTired/p/4761122.html

你可能感兴趣的文章
js中的事件委托详解
查看>>
区块链智能合约是什么?
查看>>
redis持久化快速回忆手册
查看>>
周庆钢:大数据驱动企业管理与营销决策
查看>>
js读取cookie信息
查看>>
Android第三方开源FloatingActionButton(com.getbase.floatingactionbutton): FloatingActionsMenu【3】...
查看>>
Python3—— collections模块
查看>>
WebLogic口令猜解工具【Python脚本】
查看>>
消灭天价药,AI会成为新药神吗?
查看>>
[增删改查] 使用 React 做后台管理 CRUD 界面和 RESTful 交互
查看>>
springboot demo
查看>>
PostgreSQL 11 preview - 多阶段并行聚合array_agg, string_agg
查看>>
Linux下查看某个命令的参数
查看>>
CUBA Platform 7.0.4 发布,企业级应用开发平台
查看>>
KodExplorer 4.40 发布,权限机制优化
查看>>
北京软件造价评估联盟:开启软件成本度量新篇章
查看>>
Mac下安装eclipse(Mac 10.12/JDK/tomcat)
查看>>
Facebook的Aquila遭查,无人机事故频发皆因哪般
查看>>
4月17日云栖精选夜读:90后剁手党占了一半!天猫是如何成为奢侈品第一平台的?...
查看>>
后引力波之战已经打响,神秘伽马射线来自何方?
查看>>