hdoj 2102 A计划 【BFS】
来源:互联网 发布:玩天龙八部网络延迟 编辑:程序博客网 时间:2024/05/01 07:50
题目:hdoj 2102 A计划点击打开链接
题意:中文的就不说了。求救出公主所需要的最短时间,所以用广搜。
分析:读题之后不难做,比一般的题目多了一个条件就是可以传送,那么我们可以在广搜里面加一个传送的条件就好了。
其次这个题目注意有个坑就是如果两边都是传送门的话也不行
还有注意广搜写法,如果把队列定义成全局的话注意清空!!
#include <cstdio>#include <iostream>#include <queue>#include <cstring>#include <algorithm>#include <stack>#include <vector>#include <utility>#include <cmath>using namespace std;const int N = 20;int n,m,t;char mp[3][N][N];int vis[3][N][N];int tx[5]={0,0,1,-1};int ty[5]={1,-1,0,0};struct Node{ int x,y,z; int step;};queue<Node> q;int BFS(Node st,Node en){ vis[st.x][st.y][st.z]=1; q.push(st); while(!q.empty()) { Node tmp=q.front(),cpp; q.pop(); if(tmp.x==en.x && tmp.y==en.y && tmp.z==en.z){ return tmp.step; } //printf("--%d %d %d %c\n",tmp.x,tmp.y,tmp.z,mp[tmp.x][tmp.y][tmp.z]); if(mp[tmp.x][tmp.y][tmp.z]=='#') { cpp.x=(tmp.x+1)%2; cpp.y=tmp.y; cpp.z=tmp.z; if(vis[cpp.x][cpp.y][cpp.z]==1) continue; if(mp[cpp.x][cpp.y][cpp.z]=='*' || mp[cpp.x][cpp.y][cpp.z]=='#') continue; q.push(cpp); vis[cpp.x][cpp.y][cpp.z]=1; } else { for(int i=0;i<4;i++) { cpp.x=tmp.x; cpp.y=tmp.y+tx[i]; cpp.z=tmp.z+ty[i]; cpp.step=tmp.step+1; if(mp[cpp.x][cpp.y][cpp.z]=='*') continue; if(cpp.y>=0 && cpp.z>=0 && cpp.y<n && cpp.z<m && vis[cpp.x][cpp.y][cpp.z]==0) { q.push(cpp); vis[cpp.x][cpp.y][cpp.z]=1; } } } } return -1;}int main(){ //freopen("Input.txt","r",stdin); int T; scanf("%d",&T); while(T--) { memset(vis,0,sizeof(vis)); Node st,en; st.x=0,st.y=0,st.step=0,st.z=0; scanf("%d%d%d",&n,&m,&t); for(int k=0;k<2;k++) for(int i=0;i<n;i++) for(int j=0;j<m;j++){ cin>>mp[k][i][j]; if(mp[k][i][j]=='P') en.x=k,en.y=i,en.z=j; } //cout<<en.x<<" "<<en.y<<" "<<en.z<<endl; int ans=BFS(st,en); if(ans<=t && ans!=-1) puts("YES"); else puts("NO"); while(!q.empty()) //注意这里 q.pop(); } return 0;}
0 1
- HDOJ 2102 A计划 (BFS)
- hdoj 2102 A计划 【BFS】
- HDOJ A计划 2102【BFS】
- hdoj 2102 A计划 【BFS】
- (BFS)A计划--HDOJ
- HDOJ 题目2102 A计划(BFS)
- HDOJ 2102 A计划(bfs)
- HDOJ 2102 A计划 (BFS)
- hdoj 2102 A计划(简单bfs)
- HDOJ-2102A计划(简单BFS)
- HDOJ 2102 A计划 (BFS)
- HDU/HDOJ 2102 A计划 广度优先搜索BFS
- hdoj A计划 2102 (bfs) 好题
- 2102 A计划【bfs】
- HDOJ 2102 A计划
- hdoj 2102 A计划
- HDOJ 2102 A计划
- HDU 2102 A计划 BFS
- jsp面试题
- 另5个你不知道的HTML5接口API
- [leetcode] Minimum Window Substring
- AFNetworking2.0源码解析<一>
- HTML5 Web Storage 特性
- hdoj 2102 A计划 【BFS】
- 安装内核模块的编译环境
- Android多媒体学习十三:检索MediaStore中的Video和其对应的缩略图信息
- Android 音频系统
- Android 中实现并发性、联网和数据访问
- Windows安装和使用zookeeper
- HTML5 自动聚焦 属性
- 指针的魅力(来自CSDN博客)
- 使用Node.js快速搭建WebSocket server