博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ny82 迷宫寻宝(一) map+queue
阅读量:6447 次
发布时间:2019-06-23

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

题目地址:

AC代码:讲解,先统计在可搜索范围内对应的钥匙数,把搜到的门存到另外的一个队列中,第一个搜索结束后,开始看搜到的钥匙能否打看门,

            如果能打看门,存到第一个队列中,在进行搜寻,知道找到宝藏,或者什么也没有找到,则退出;

AC代码:

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 map
key; 9 map
key1;10 int dir[4][2]={ 0,-1,0,1,-1,0,1,0};11 char mapp[21][21];12 int vis[21][21];13 int s1,s2,e1,e2,m,n;14 struct T15 {16 int x,y;17 }now,eed;18 struct KEY19 {20 int x,y;21 }ee,nn;22 int bfs()23 {24 vis[s1][s2]=1;25 queue< T >aa;26 queue< KEY >bb;27 now.x=s1; now.y=s2;28 aa.push(now);29 while(1)30 {31 while(!aa.empty())//搜寻可以搜的地方,搜到门,存到下一个队列中;32 {33 eed=aa.front();34 aa.pop();35 if(eed.x==e1 && eed.y==e2)36 return 1;37 for(int i=0; i<4; i++)38 {39 now.x=eed.x+dir[i][0];now.y=eed.y+dir[i][1];40 if(now.x>0 && now.x<=m && now.y>0 && now.y<=n && mapp[now.x][now.y]!='X' && vis[now.x][now.y]==0)41 {42 if(mapp[now.x][now.y]>='a' && mapp[now.x][now.y]<='e')// 钥匙43 { key1[mapp[now.x][now.y]]++,aa.push(now); }44 else if(mapp[now.x][now.y]=='.' || mapp[now.x][now.y]=='G')45 aa.push(now);46 else if(mapp[now.x][now.y]>='A' && mapp[now.x][now.y]<='E')47 { 48 nn.x=now.x; nn.y=now.y;49 bb.push(nn);50 }51 vis[now.x][now.y]=1;52 }53 }54 }55 int siz=bb.size();56 while(!bb.empty() && siz--)//遍历搜到的门,看能否打开,如果能的话,存到第一个队列中,再次搜索;57 {58 nn=bb.front();59 if(key[mapp[nn.x][nn.y]+32]==key1[mapp[nn.x][nn.y]+32] && key[mapp[nn.x][nn.y]+32]>0)60 { now.x=nn.x;now.y=nn.y;61 aa.push(now);bb.pop();62 }63 else bb.push(nn),bb.pop();64 }65 if(aa.empty())//如果队列1,为空证明,路已经走不下去了,结束搜索;66 return 0;67 }68 return 0;69 }70 int main()71 {72 while(cin>>m>>n && m+n)73 {74 key.clear();key1.clear();75 memset(vis,0,sizeof(vis));76 for(int i=1; i<=m ;i++)77 for(int j=1 ;j<=n; j++)78 {79 cin>>mapp[i][j];80 if(mapp[i][j]=='S')81 s1=i,s2=j;82 else if(mapp[i][j]=='G')83 e1=i,e2=j;84 else if(mapp[i][j]>='a' && mapp[i][j]<='e')//统计总共的钥匙的个数;85 key[mapp[i][j]]++;86 }87 int ans=bfs();88 if(ans==1)89 cout<<"YES"<

 

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

你可能感兴趣的文章
《嵌入式系统数字视频处理权威指南》——2.3数字视频:颜色空间
查看>>
建设智慧城市 成都市交委与滴滴出行签战略合作协议
查看>>
注意那些容易被忽略的SQL注入技巧
查看>>
《日志管理与分析权威指南》一1.2.3 什么是日志消息
查看>>
《金蝶ERP-K/3完全使用详解》——6.8 报表查询分析
查看>>
《Hadoop与大数据挖掘》一2.2.5 动手实践:Hadoop IDE配置
查看>>
《计算机系统:系统架构与操作系统的高度集成》——2.9 指令集体系结构选择...
查看>>
《贝叶斯思维:统计建模的Python学习法》——2.7 讨论
查看>>
《CCNP安全Secure 642-637认证考试指南》——8.5节完成助记表
查看>>
《Android应用开发》——1.1节下载开发软件
查看>>
《贝叶斯思维:统计建模的Python学习法》——1.7 Monty Hall难题
查看>>
升级TCP协议使网速提升30%,中国受益明显
查看>>
Go 语言对 Android 原生应用开发的支持情况
查看>>
《沟通的技术——让交流、会议与演讲更有效》一1.1 一切尽在计划之中
查看>>
Firefox 44 浏览器内建更好的 SSL 错误指示器
查看>>
《数据科学:R语言实现》——2.9 使用twitteR
查看>>
《思科UCS服务器统一计算》一第2章 服务器架构2.1 处理器的演变
查看>>
微软概述 Islandwood 计划
查看>>
《CUDA C编程权威指南》——3.2节理解线程束执行的本质
查看>>
《深入理解Android》一导读
查看>>