(简单) POJ 3984 迷宫问题,BFS。

  Description

定义一个二维数组:

int maze[5][5] = {
0, 1, 0, 0, 0,
0, 1, 0, 1, 0,
0, 0, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 1, 0,
};

  它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
水题,BFS然后记录路径就好。
代码如下:
#include<iostream>
#include<cstring>
#include<queue>
#include<utility>using namespace std;typedef struct pair<int,int> pii;int vis[6][6];
int fa[6][6];bool judge(int x,int y)
{if(x<0||y<0||x>4||y>4)return 0;if(vis[x][y])return 0;return 1;
}void slove()
{queue < pii > que;pii temp,temp1;int t1,t2;que.push(make_pair(0,0));vis[0][0]=1;while(!que.empty()){temp=que.front();que.pop();t1=temp.first/5;t2=temp.first%5;fa[t1][t2]=temp.second;if(t1==4&&t2==4)return;--t1;if(judge(t1,t2)){vis[t1][t2]=1;temp1=make_pair(t1*5+t2,temp.first);que.push(temp1);}t1+=2;if(judge(t1,t2)){vis[t1][t2]=1;que.push(make_pair(t1*5+t2,temp.first));}--t1;--t2;    if(judge(t1,t2)){vis[t1][t2]=1;que.push(make_pair(t1*5+t2,temp.first));}    t2+=2;if(judge(t1,t2)){vis[t1][t2]=1;que.push(make_pair(t1*5+t2,temp.first));}}
}void showans()
{int cou=0;int ans[30];int temp=24;while(temp){ans[cou++]=temp;temp=fa[temp/5][temp%5];}cout<<"(0, 0)"<<endl;for(int i=cou-1;i>=0;--i)cout<<'('<<ans[i]/5<<", "<<ans[i]%5<<')'<<endl;
}int main()
{ios::sync_with_stdio(false);while(cin>>vis[0][0]){for(int j=1;j<5;++j)cin>>vis[0][j];for(int i=1;i<5;++i)for(int j=0;j<5;++j)cin>>vis[i][j];slove();showans();}    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/whywhy/p/4229923.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个托盘程序演示 -闹钟 Alert

From: http://www.vckbase.com/document/viewdoc/?id996 下载源代码 关键字&#xff1a;托盘 Tray   想必大家都看见过那些在系统托盘&#xff08;Tray&#xff09;中的程序吧&#xff0c;本文就演示了如何创建一个这样的托盘程序Alert。Alert是一个运行在系统托盘中的小…

watch的immediate使用

vue中watch不触发、不生效的解决办法及原理 Vue watch监听路由不生效&#xff0c;没反应 watch的immediate使用

[转]ODAC 应用技巧 (一)使用 ODAC 的 Net 方式

原文地址&#xff1a;ODAC 应用技巧 &#xff08;一&#xff09;使用 ODAC 的 Net 方式 使用 ODAC 的 Net 方式 nxyc_twz163.com 大多数应用程序使用 OCI 的ODAC 标准方式来连接 Oracle 数据库服务器。这是使用第三方开发语言设计 Oracle 应用程序最常用的方法。 所有的 OCI …

adam算法效果差原因_冷库制冷效果差原因

冷库常见的现象有冷库温度降不下来和下降缓慢的时候&#xff0c;现在对库温下降缓慢的原因简单分析&#xff1a;1、冷库工程由于隔热或密封性能差&#xff0c;导致冷量损耗大隔热性能差是由于管道、库房隔热墙等的保温层厚度不够&#xff0c;隔热和保温效果不良&#xff0c;它主…

解决hive交互模式退格键乱码

在hive的交互模式下&#xff0c;输入退格、方向键等&#xff0c;出现乱码&#xff0c;可以通过如下方法解决&#xff1a; 1、修改bashrc文件&#xff1a; vi ~/.bashrc 在文件最后添加一行&#xff1a; stty erase ^H。 2、使修改生效&#xff1a; source ~/.bashrc 这样&#…

element弹框的的this.$alert、this.$prompt方法用法

element弹框的的this.alert、this.alert、this.alert、this.prompt方法用法

VS2010删除所有断点时不弹出提示窗口

用VS.NET平台程序时&#xff0c;如何才能在删除所有断点时不弹出提示窗口呢&#xff1f;请看下图&#xff0c;马上明白&#xff1a;

如何使用Chrome的Network面板分析HTTP报文

Chrome教程之NetWork面板分析网络请求 如何使用Chrome的Network面板分析HTTP报文

关于Eclipse基本设置(字体大小、项目导入、简单)

1、如果事先你用其他软件写好了一个项目文件夹&#xff0c;导入到Eclipse继续编辑&#xff0c;可以&#xff1a; 打开File→Import→Genral→File System→ Next &#xff0c;然后选择文件夹&#xff08;建议在导入之前&#xff0c;先建立一个工程object&#xff09; 2、字体大…

多通道_人机交互界面的多通道RGB LED驱动设计

现在的产品变得非常智能且彼此相互连接。扬声器、电视、冰箱、机顶盒和烟雾探测器等器件不再只是处在某一位置的工具 - 用户可远程或通过语音唤醒控制它们。这些器件比以前更加智能&#xff0c;这意味着它们还需要更加智慧的人机交互界面。  人机交互的界面可以多种多样&…

转,rsa算法

[编辑] 公钥和私钥的产生 假设Alice想要通过一个不可靠的媒体接收Bob的一条私人訊息。她可以用以下的方式来产生一个公钥和一个私钥&#xff1a;随意选择两个大的质数p和q&#xff0c;p不等于q&#xff0c;计算Npq。 根据歐拉函數&#xff0c;不大于N且与N互质的整数个数为(p-1…

VC按最小化、关闭按钮、Esc都隐藏主窗口

VC按最小化、关闭按钮、Esc键都隐藏主窗口&#xff0c;在托盘处程序图标的右键菜单中点击&#xff0c;显示主窗口。 1. 按最小化时隐藏主窗口&#xff1a;为窗口添加WM_SIZE消息响应函数 void CdDlg::OnSize(UINT nType, int cx, int cy) {CDialogEx::OnSize(nType, cx, cy);i…

越是聪明人越要懂得下笨功夫!

很多人认为聪明的人才会成功&#xff0c;其实&#xff0c;事情恰恰相反。 很多聪明的人做事情往往难以成功。人们常说“聪明反被聪明误”&#xff0c;说的就是这个道理。很多聪明人做事情不能成功&#xff0c;原因有二&#xff1a;一是不能下笨功夫&#xff1b;二是他们没有找到…

Taro+react开发(65):h5全局重置背景样式

.taro_page{height:100% }.onlineQuetion_body{background: linear-gradient(0deg,#5a70a6,#5c7cc9);height:100%; } body,html{height:100%; }

Vue项目 开启gzip

Vue项目 开启gzip Nginx 动态压缩与静态压缩&#xff0c;显著提高前后端分离项目响应速度 Gzip Precompression模块&#xff08;Gzip Precompression&#xff09; nginx缓存配置及开启gzip压缩 理解http浏览器的协商缓存和强制缓存 一文读懂前端缓存

宿舍管理系统项目管理师_2020下半年信息系统项目管理师真题——案例分析(带解析)...

2020下半年信息系统项目管理师真题——案例分析(带解析~强哥版)案例分析这次继续是计算题分析题的分布&#xff0c;但这个题由于理解上有歧义&#xff0c;所以也是大家经常争论的一个题&#xff0c;但无论第一列还是第二列对考分影响不会很大&#xff0c;所以大家还是要耐心等成…

C# DateTime ToString

From: http://www.cnblogs.com/yangdj2000/archive/2009/04/29/1446063.html 字符型转换为字符串 // C 货币 2.5.ToString("C"); // &#xffe5;2.50 // D 10进制数 25.ToString("D5"); // 25000 // E 科学型 25000.ToString("E"); // 2.5…

PHP异常与错误处理机制

先区别一下php中错误 与 异常的概念吧 PHP错误&#xff1a;是属于php程序自身的问题&#xff0c;一般是由非法的语法&#xff0c;环境问题导致的&#xff0c;使得编译器无法通过检查&#xff0c;甚至无法运行的情况。平时遇到的warming、notice都是错误&#xff0c;只是级别不同…

python 计算小于某个数_python 列表寻找满足某个条件的开始索引和结束索引、区间范围...

在使用python列表的时候&#xff0c;我们经常需要找到满足某个条件的数的开始索引和结束索引&#xff0c;即满足某个条件的数的区间范围&#xff0c;本文以寻找绝对值大于等于0且小于等于3的数值区间为例&#xff0c;代码如下所示&#xff1a;这是我在做项目写python代码的时候…