OpenJudge7084迷宫问题

迷宫问题

题目背景

定义一个二维数组:

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表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

输入格式

一个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

样例输出

(0, 0)
(1, 0)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 4)
(4, 4)

在样例输出中,逗号后面有个空格,emmm…鬼知道我找了多久bug

#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
using namespace std;int maze[5][5];//地图
bool visited[5][5];
int dx[4] = {-1,0,1,0};
int dy[4] = {0,1,0,-1};
pair<int,int> p[10][10];//用于存储每个点的前驱结点
stack<pair<int,int> >s;//存放正确路径void bfs()
{queue<pair<int,int> >q;q.push({0,0});visited[0][0] = true;while(!q.empty()){int x = q.front().first;int y = q.front().second;q.pop();if(x == 4 && y == 4){while(x > 0 && y >= 0){s.push({x,y});//将结点入栈pair<int,int> t = p[x][y];x = t.first;y = t.second;}s.push({0,0});while(!s.empty()){cout << "(" << s.top().first << ", " << s.top().second << ")" <<endl;s.pop();}}for(int i = 0;i < 4;i++){int nx = x + dx[i];int ny = y + dy[i];if(nx >= 0 && nx <= 4 && ny >= 0 && ny <= 4 && maze[nx][ny] == 0 && !visited[nx][ny]){visited[nx][ny] = true;q.push({nx,ny});p[nx][ny] = {x,y};//点(nx,ny)的前驱结点为(x,y)}}}}int main()
{for(int i = 0;i < 5;i++){for(int j = 0;j < 5;j++){cin >> maze[i][j];}}bfs();return 0;
}

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

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

相关文章

【Vue3】源码探索之旅:compiler-core之parseChildren函数(二)

简言 parseChildren函数是在baseParse函数中作为createRoot函数的子节点参数传入的&#xff0c;今天来探索下parseChildren函数。 parseChildren在 compiler-core/src/parse.ts文件内。 parseChildren 这个函数就是用来解析模板字符串内容的 &#xff0c;里面有个while循环…

常见code review问题

空值&#xff1a;值为null导致空指针异常&#xff0c;参数字符串含有前导或后缀空格没有Trim导致查询为空&#xff0c;建议添加空值检测&#xff0c;在参数入口统一做trim未捕获的异常&#xff1a;调用API接口、库函数或系统服务时&#xff0c;一定要添加防护&#xff0c;做防御…

CSS局限属性contain:优化渲染性能的利器

CSS局限属性contain&#xff1a;优化渲染性能的利器 在网页开发中&#xff0c;优化渲染性能是一个重要的目标。CSS局限属性contain是一个强大的工具&#xff0c;可以帮助我们提高网页的渲染性能。本文将介绍contain属性的基本概念、用法和优势&#xff0c;以及如何使用它来优化…

docker-学习-4

docker学习第四天 docker学习第四天1. 回顾1.1. 容器的网络类型1.2. 容器的本质1.3. 数据的持久化1.4. 看有哪些卷1.5. 看卷的详细信息 2. 如何做多台宿主机里的多个容器之间的数据共享2.1. 概念2.2. 搭NFS服务器实现多个容器之间的数据共享的详细步骤2.3. 如果是多台机器&…

什么是war包?war包该怎么运行?

什么是war包&#xff1f;war包该怎么运行&#xff1f; 很多学习 java 的小伙伴都听过 jar 包&#xff0c;但未必听说过 war 包。小编学习了多年的 java&#xff0c;也是在某次期末作业中老师要求打 war 包提交作业的时候才知道有这种东西&#xff0c;为此还对怎么打 war 包和 …

web应用课——(第二讲:CSS)

目录 一、实战项目一&#xff1a;Acwing名片 二、实战项目二&#xff1a;Bilibili名片 三、样式定义方式 四、选择器 五、颜色 六、文本 七、字体 八、背景 九、边框 十、元素展示格式 十一、内边距与外边距 十二、盒子模型 十三、位置 十四、浮动 十五、flex布…

T113-Pro的buildroot添加gdisk ( GPT disks )出现gptfdisk needs a toolchain w/ C++的解决方法

问题背景&#xff1a; 最近入手了百问网的全志T113-Pro&#xff0c;用Emmc启动发现一张32GB的SD卡在烧录了百问网镜像 100ask-t113-pro_sdcard.img 的系统后&#xff0c;仅有200多M的存储空间。第一时间上百问网论坛看是否有板友也出现类似情况&#xff0c;发现了一个帖子正是描…

幻兽帕鲁能在Mac上运行吗?幻兽帕鲁Palworld新手攻略

幻兽帕鲁能在Mac上运行吗&#xff1f; 《幻兽帕鲁》目前还未正式登陆Mac平台&#xff0c;不过通过一些方法是可以让游戏在该平台运行的。 虽然游戏不能在最高配置下运行&#xff0c;但如果你安装了CrossOver这个软件&#xff0c;就可以玩了。这是为Mac、Linux和ChromeOS等设计…

2024最新版IntelliJ IDEA安装使用指南

2024最新版IntelliJ IDEA安装使用指南 Installation and Usage Guide to the Latest JetBrains IntelliJ IDEA Community Editionn in 2024 By JacksonML JetBrains公司开发的IntelliJ IDEA一经问世&#xff0c;就受到全球Java/Kotlin开发者的热捧。这款集成开发环境&#xf…

MySQL中的多表查询语句

一、什么是多表查询 在了解多表查询之前&#xff0c;我们先看一下什么是单表查询。 select * from A 那什么是多表查询呢&#xff1f; select * from A,B 这是初学者比较容易理解的多表查询&#xff0c;就是直接查询两张表的字段&#xff0c;当然&#xff0c;星号可以改为对应的…

react 实现点击其他地方,隐藏列表(点击元素外)

前言&#xff1a; 我们经常封装一些自己的下拉列表组件 或者 弹窗组件。一般 点击按钮显示 列表或 弹窗。再次点击 隐藏或关闭&#xff0c;但 ui库里的下拉列表&#xff0c;点击除了自己本身也能实现隐藏对应的列表。下面我就给大家一个实现思路。 弹窗组件可以用 React Port…

Spring: 实体类转换工具总结

文章目录 一、MapStruct1、介绍2、原理3、使用4、问题处理&#xff08;1&#xff09;IDEA编译报错&#xff1a;NullPointerException 一、MapStruct 1、介绍 MapStruct是一个实体类属性映射工具&#xff0c;通过注解的方式实现将一个实体类的属性值映射到另外一个实体类中。在…

torch.sign()详解

torch.sign()是pytorch中的一个函数&#xff0c;用于计算输入张量的元素的符号。 具体地说&#xff0c;torch.sign()函数会返回一个新的张量&#xff0c;其中的元素是输入张量中对应元素的符号。如果输入张量的元素为正数&#xff0c;则对应位置的输出张量元素为1&#xff1b;…

unity3d的海盗王白银城演示

这是一个外网上的下载的海盗王unity3d制作的白银城演示场景。 地图只含有白银城区&#xff0c;没有野外和怪物。 当然也没有服务器端的。 我对灯光、摄像头、天空背景等做过调整&#xff0c;使它显示起来比较鲜丽。 它的模型和贴图是直接拿了海盗的&#xff0c;没有做过优化调整…

python-自动化篇-运维-监控-如何使⽤Python处理和解析⽇志⽂件?-实操记录

文章目录 1. 选择日志文件格式&#xff1a; 确定要处理的日志文件的格式。不同的日志文件可能具有不同的格式&#xff0c;如文本日志、CSV、JSON、XML等。了解日志文件的格式对解析⾮常重要。2. 打开日志文件&#xff1a; 使⽤Python的文件操作功能打开日志文件&#xff0c;以便…

jQuery css() 方法 —— W3school 详解 简单易懂(十六)

jQuery css() 方法 css() 方法设置或返回被选元素的一个或多个样式属性。 返回 CSS 属性 如需返回指定的 CSS 属性的值&#xff0c;请使用如下语法&#xff1a; css("propertyname"); 下面的例子将返回首个匹配元素的 background-color 值&#xff1a; $("…

Kotlin 协程:深入理解 ‘lifecycleScope‘

Kotlin 协程&#xff1a;深入理解 ‘lifecycleScope’ Kotlin 协程是一种强大的异步编程工具&#xff0c;它提供了一种简洁、易读的方式来处理并发和异步操作。在 Kotlin 协程库中&#xff0c;lifecycleScope 是一个关键的概念&#xff0c;它允许我们将协程的生命周期绑定到 An…

第二十一回 阎婆大闹郓城县 朱仝义释宋公明-FreeBSD Linux 使用Rsync备份

阎婆状告宋江杀死她女儿阎婆惜&#xff0c;知县有意偏袒宋江&#xff0c;只是一味的拷打唐牛儿&#xff0c;但无奈张三张文远说刀子是宋江的&#xff0c;知县不得已差人拿宋江来审问。第一次没见到人&#xff0c;第二次派朱仝雷横两个人去。 朱仝到地窖里找到了躲藏的宋江&…

QT使用QFileSystemModel实现的文件资源管理器(开源)

文章目录 效果图现实的功能总体框架功能介绍视图双击进入处理复制与剪切粘贴重命名&#xff0c;新建显示文件详细信息文件路径导航栏 总结 效果图 现实的功能 支持文件/文件夹复制&#xff0c;粘贴&#xff0c;剪切&#xff0c;删除&#xff0c;重命名的基本操作支持打开图片&…

【算法分析与设计】交换两个节点

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本…