博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2102 A计划 DFS与BFS两种写法 [搜索]
阅读量:4957 次
发布时间:2019-06-12

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

1.题意:一位公主被困在迷宫里,一位勇士前去营救,迷宫为两层,规模为N*M,迷宫入口为(0,0,0),公主的位置用'P'标记;迷宫内,'.'表示空地,'*'表示墙,特殊的,'#'表示时空传输机,走到这里就会被传输到另一层的相对位置;在迷宫内没走动一步耗时为1,最终求解是否能在T时刻解救到公主;

2.输入输出:第一行C表示C组数据,每一组内N,M,T给出的迷宫规模与时间,接着给出了双层迷宫的内容;若是能找到公主输出"YES",否则"NO";

3.分析:这里原题意判断是否能在T时刻找到,然而要是写搜索判断有没有"时刻为T且位置为P"的状态,会超时,所以直接判断能不能在T时刻之前就找到;

BFS版:求出到达P处的最短时间并判断是否小于T;DFS版:找到第一个"时刻小于T且位置为P的状态"就返回;

1 # include 
2 # include
3 # include
4 # include
5 using namespace std; 6 const int maxn=15; 7 int N,M,T; 8 int dx[4]={
0,0,-1,1}; 9 int dy[4]={-1,1,0,0};10 char maze[2][maxn][maxn];11 int vis[2][maxn][maxn];12 struct Node13 {14 int l,x,y,t;15 Node(){}16 Node(int ll,int xx,int yy,int tt)17 {18 l=ll;19 x=xx;20 y=yy;21 t=tt;22 }23 };24 void Init()25 {26 scanf("%d%d%d",&N,&M,&T);27 for(int i=0;i<2;i++)28 for(int j=0;j
Q;36 vis[0][0][0]=1;37 Q.push(Node(0,0,0,0));38 while(!Q.empty())39 {40 Node temp=Q.front();41 Q.pop();42 if(temp.t<=T&&maze[temp.l][temp.x][temp.y]=='P')43 {44 ans=1;45 break;46 }47 if(temp.t>T) break;48 for(int i=0;i<4;i++)49 {50 int nx=temp.x+dx[i];51 int ny=temp.y+dy[i];52 if(nx>=0&&ny>=0&&nx
0) printf("YES\n");69 else printf("NO\n");70 }71 int main()72 {73 //freopen("in.txt","r",stdin);74 //freopen("out.txt","w",stdout);75 int C;76 scanf("%d",&C);77 while(C--)78 {79 Init();80 Solve();81 } 82 return 0;83 }
1 # include 
2 # include
3 # include
4 # include
5 using namespace std; 6 const int MAXN=15; 7 char Maze[2][MAXN][MAXN]; 8 int dx[4]={
1,-1,0,0}; 9 int dy[4]={
0,0,1,-1};10 int vis[2][MAXN][MAXN];11 int N,M,T,f;12 void Init()13 {14 f=0;15 scanf("%d%d%d",&N,&M,&T);16 for(int k=0;k<2;k++)17 for(int i=0;i
=0&&ny>=0&&nx

 

转载于:https://www.cnblogs.com/cnXuYang/p/6644844.html

你可能感兴趣的文章
语音合成最新进展
查看>>
[BZOJ1000] A+B Problem
查看>>
UVA 1149 Bin Packing 二分+贪心
查看>>
kuangbin大佬的高斯消元模板
查看>>
ELK部署
查看>>
通过storyboard设置cell
查看>>
mongodb write 【摘自网上,只为记录,学习】
查看>>
Configuration Extensions - 简化配置,让你配置支持变量
查看>>
Java安全 – JCE Blowfish算法报错
查看>>
Navicat 12 破解方法
查看>>
中国大学MOOC-数据结构基础习题集、05-2、Saving James Bond - Easy Version
查看>>
LeetCode:36. 有效的数独
查看>>
DEV:GridControl 筛选复选框 Checked Dropdown更改数据源
查看>>
第九节 字符串指针(十)
查看>>
生成php所需要的APNS Service pem证书的步骤
查看>>
SQL语句case when外用sum与count的区别
查看>>
lua 迭代器 iterator
查看>>
Oracle_merge into 中 using 后的查询表如果有参数的情况
查看>>
3Sum Closest
查看>>
Java 两次MD5
查看>>