博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU/HDOJ 2102 A计划 广度优先搜索BFS
阅读量:6452 次
发布时间:2019-06-23

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

题目:

wa了很多次,很悲剧,传送门有几个需要注意的细节,看remap函数,对这些情况的处理。

 

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;int n,m,t,flag;int dir[4][2]={-1,0,1,0,0,1,0,-1};char maze[2][11][11];bool visit[2][11][11];struct node{ int x,y,h; int step;}p,q,endp;queue
Q;bool isbond(node &a){ if(a.x<0||a.x>=m||a.y<0||a.y>=n)return 1; return 0;}void bfs(){ while(!Q.empty())Q.pop(); p.x=p.y=p.h=p.step=0; visit[0][0][0]=1; Q.push(p); while(!Q.empty()) { p=Q.front(); Q.pop(); if(maze[p.h][p.x][p.y]=='#'){ //传送 if(!visit[!p.h][p.x][p.y]){ if(maze[!p.h][p.x][p.y]=='P'){ if(p.step<=t){ flag=1; return ; } return ; } visit[!p.h][p.x][p.y]=1; p.h=!p.h; Q.push(p); } continue; } for(int i=0;i<4;i++) { q.x=p.x+dir[i][0]; q.y=p.y+dir[i][1]; q.h=p.h; q.step=p.step+1; if(isbond(q))continue; // 边界 if(maze[q.h][q.x][q.y]=='*')continue; //当前障碍 if(visit[q.h][q.x][q.y])continue; //访问 if(maze[q.h][q.x][q.y]=='P'){ if(q.step<=t){ flag=1; return ; } return ; } visit[q.h][q.x][q.y]=1; Q.push(q); } }}void remap(){ for(int i=0;i
>c; while(c--) { cin>>n>>m>>t; for(int i=0;i
>maze[0][i][j]; } for(int i=0;i
>maze[1][i][j]; } flag=0; memset(visit,0,sizeof(visit)); remap(); bfs(); if(flag)cout<<"YES"<

 

 

转载地址:http://jpfzo.baihongyu.com/

你可能感兴趣的文章
由中序遍历和后序遍历求前序遍历
查看>>
JQUERY Uploadify 3.1 C#使用案例
查看>>
coursera 北京大学 程序设计与算法 专项课程 完美覆盖
查看>>
firewall 端口转发
查看>>
wndows make images
查看>>
FS系统开发设计(思维导图)
查看>>
我学习参考的网址
查看>>
DEDE自带的采集功能,标题太短的解决方法
查看>>
easyui的combotree以及tree,c#后台异步加载的详细介绍
查看>>
1、串(字符串)以及串的模式匹配算法
查看>>
[Processing]点到线段的最小距离
查看>>
考研随笔2
查看>>
ubuntu Linux 操作系统安装与配置
查看>>
操作系统os常识
查看>>
乱码的情况
查看>>
虚拟机centos 同一个tomcat、不同端口访问不同的项目
查看>>
在不花一分钱的情况下,如何验证你的创业想法是否可行?《转》
查看>>
Linux/Android 性能优化工具 perf
查看>>
GitHub使用教程、注册与安装
查看>>
论以结果为导向
查看>>