hdu 2102 A计划_bfs搜索
来源:互联网 发布:ewsa软件字典软件 编辑:程序博客网 时间:2024/05/16 10:25
题意:略
思路:此题陷阱超多,当##,#*,*#时不能走进去,套下模板就行了。
#include <iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;#define N 20struct node{ int x,y,z; int step;}pri;int next[][2]={{1,0},{0,1},{-1,0},{0,-1}};char map[2][N][N];int n,m,time;bool vis[2][N][N];bool check(node a){ if(a.x>=0&&a.x<n&&a.y>=0&&a.y<m&&map[a.z][a.x][a.y]!='*' &&!vis[a.z][a.x][a.y]&&a.step<=time) return 1; return 0;}bool bfs(){ int i; queue<node>q; node tmp; memset(vis,0,sizeof(vis)); q.push(pri); vis[pri.z][pri.x][pri.y]=1; while(!q.empty()){ tmp=q.front(); q.pop(); if(map[tmp.z][tmp.x][tmp.y]=='P'&&tmp.step<=time) return 1; for(i=0;i<4;i++){ node u; u=tmp; u.x+=next[i][0]; u.y+=next[i][1]; u.step+=1; if(check(u)){ vis[u.z][u.x][u.y]=1; if(map[u.z][u.x][u.y]=='#'&&!vis[(u.z+1)%2][u.x][u.y]){ u.z=(u.z+1)%2; } q.push(u); } } } return 0;}int main(int argc, char** argv) { int t,i,j,k; scanf("%d",&t); while(t--){ scanf("%d%d%d",&n,&m,&time); for(k=0;k<2;k++) for(i=0;i<n;i++){ scanf("%s",map[k][i]); for(j=0;j<m;j++){ if(map[k][i][j]=='S'){ pri.x=i; pri.y=j; pri.z=k; pri.step=0; } } } for(i=0;i<n;i++) for(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]=map[1][i][j]='*'; if(map[1][i][j]=='*'&&map[0][i][j]=='#') map[0][i][j]=map[1][i][j]='*'; } if(bfs()) printf("YES\n"); else printf("NO\n"); } return 0;}
0 0
- hdu 2102 A计划_bfs搜索
- HDU 2102 A计划 广度优先搜索
- HDU 2102 A计划 经典搜索~
- HDU 2102 A计划 (搜索 队列)
- ACM 搜索 hdu 2102 A计划
- hdu 2012A计划 搜索
- HDU/HDOJ 2102 A计划 广度优先搜索BFS
- hdu 2102A计划(搜索,两层迷宫)
- hdu 2102 A计划 bfs搜索 解题报告
- HDU 2102 A计划( BFS广度优先搜索)
- HDU 2102 A计划(广度优先搜索+数据)
- hdu 2102 A计划
- HDU-2102-A计划
- HDU 2102 A计划
- HDU 2102 A计划
- HDU 2102 A计划
- hdu 2102 A计划
- hdu 2102 A计划
- 黑马程序员之交通灯管理系统学习
- Python中多线程与同步
- 三个月后再次步入职场
- Linux下利用 Python连接mysql数据库一个很好的例子
- C#执行命令行命令
- hdu 2102 A计划_bfs搜索
- 前端面试题
- 有一种巧立名目叫“其他支出”
- Schema中xsd:unique元素的使用方法
- scanf("%d\n",&a)和scanf("%d",&a) 前者为什么我输入一个数字后一直按回车都无法结束 除非输入数字回车
- 输出10个数字,求出其中第二大的数
- poj1260 Pearls
- AJAX false true
- 商品详情页面描述