蓝桥杯 迷宫(bfs)

news2024/11/26 15:32:00

0迷宫 - 蓝桥云课 (lanqiao.cn) 

 


思路 :

最后一定要倒数输出路径,因为从前面输出你会找不到下一个到底是谁,bfs过程是找最小路径,最后输出是去找方向,但是此题作为一个填空题,我直接手写(开玩笑)


AC代码:

#include<iostream>
#include<queue>
#include<utility>
#include<cstring>
#include<vector>

using namespace std;

typedef pair<int,int> PII;
char g[30][50];
int d[30][50],pre[40][60];
int ans = 0;
int dx[4] = {1,0,0,-1},dy[4] = {0,-1,1,0};
char dir[4] = { 'D','L','R','U' };                             

void bfs(int x,int y)
{
    queue<PII> q;
    q.push({x,y});
    memset(d,-1,sizeof d);
    d[0][0] = 0;
    while(q.size())
    {
    	auto t = q.front();
    	q.pop();
    	for(int i=0;i<4;i++)
    	{
    		int a = t.first + dx[i],b = t.second + dy[i];
    		if(a >= 0 && a < 30 && b >= 0 && b < 50 && g[a][b] == '0' && d[a][b] == -1)
    		{
    			d[a][b] = d[t.first][t.second] + 1;
    			pre[a][b] = i;
    			q.push({a,b});
			}
		}
	}
	return;
}

int main()
{
  // 请在此输入您的代码
  for(int i=0;i<30;i++)
  {
      for(int j=0;j<50;j++)
      {
          cin >>  g[i][j];
      }
  }
  bfs(0,0);
  int x = 29,y = 49;
  vector<int> v;
  while(x!=0 || y != 0)
  {
  	int temp = pre[x][y];
  	v.push_back(temp);
  	x -= dx[temp],y -= dy[temp];
  }
  for(int i=v.size()-1;i>=0;i--)  cout << dir[v[i]];
  return 0;
}

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

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

相关文章

每日一题 — 将 x 减到 0 的最小操作数

思路&#xff1a; 题目要求是让我们从数组的最左端和最右端进行操作&#xff0c;这样的话解题的难度大大提升&#xff0c;我们可以用 正难则反 的思想&#xff1a; 题目中要求是减去数组中的数刚好等于X&#xff0c;我们可以转换成 数组中某一段的和等于 数组的总长减去X(sum -…

vue对比react18

1.模板语法-——>jsx JSX表达式用{}包裹&#xff0c;vue模板表达式用{{}}包裹&#xff0c;其余一致。 注意:if语句、switch语句、变量声明属于语句&#xff0c;不是表达式&#xff0c;不能出现在{}或{{}}中 <!--vue--> <template><div><p>I have…

Nessus【部署 02】Windows部署漏洞扫描工具Nessus详细过程分享(下载+安装+注册+激活)

这里写目录标题 1.下载安装1.1 下载1.2 安装 2.添加用户注册插件安装2.1 添加用户2.2 注册2.3 插件安装 3.安装总结 1.下载安装 1.1 下载 1.2 安装 双击Nessus-10.7.1-x64.msi进行安装 这个只能接受&#xff1a; 选择安装路径&#xff1a; 确认安装&#xff1a; 安装ing&…

图形学基础:二维三维刚体的移动、缩放和旋转矩阵

一、二维 1.1 缩放矩阵 x&#xff0c;y分别表示在x轴&#xff0c;y轴缩放的倍数 示例&#xff1a; 点(2,1)在x&#xff0c;y轴上分别缩放x倍&#xff0c;y倍 1.2 平移矩阵 x&#xff0c;y分表表示在x轴&#xff0c;y轴上移动的距离 示例&#xff1a;点&#xff08;2,1&#xf…

每日OJ题_BFS解决FloodFill④_力扣130. 被围绕的区域

目录 力扣130. 被围绕的区域 解析代码 力扣130. 被围绕的区域 130. 被围绕的区域 难度 中等 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 X 和 O &#xff0c;找到所有被 X 围绕的区域&#xff0c;并将这些区域里所有的 O 用 X 填充。 示例 1&#xff1a; 输入&…

【MySQL】数据库节点的平滑扩容方案

一、背景 众所周知&#xff0c;数据库很容易成为应用系统的瓶颈。单机数据库的资源和处理能力有限&#xff0c;在高并发的分布式系统中&#xff0c;可采用分库分表突破单机局限。本文来探讨下数据库节点的平滑扩容方案 二、节点扩容 2.1、什么是节点扩容 扩容一般是指水平分…

test4122

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Matlab 实时读取串口并绘图

Matlab 实时读取串口并绘图 Vofa Vofa 是一个很好的跨平台上位机软件&#xff0c;但是它无法保存数据&#xff0c;而且作者也并没有要继续更新的意思&#xff0c;保存数据功能应该是遥遥无期了。因此本文使用 Matlab 实时读取串口数据&#xff0c;并使用 plot 函数绘制。 vo…

【vscode】在本地加载远端环境并开发

【vscode】在本地利用远程服务器显卡跑代码 写在最前面vscode&#xff1a;远程到本地1、安装ssh插件2、添加服务器连接配置3、连接服务器4. SSH配置5. 在ssh中安装python解释器 vscode基本操作 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光…

Grafana告警(邮件)自定义模板配置

一年前给客户部署配置过grafana&#xff0c;告警配置也是用的原始的&#xff0c;客户在使用过程中只需要一些核心点信息&#xff0c;想要实现这个就需要用Grafana的自定义告警模板以及编辑邮件模板。 通知模板 模板信息的配置中查阅了相关资料&#xff0c;自己组装了一套&…

Android Framework学习笔记(3)----Binder

什么是Binder&#xff1f; Binder是linux IPC机制的其中一种。它贯穿于应用层&#xff0c;framework层&#xff0c;以及linux Core层。 什么是IPC? 跨进程通信&#xff0c; InterProcess Communication. IPC机制都有哪些&#xff1f; 通道信号量消息队列BinderSocket共享内…

(Java)数据结构——排序(第一节)堆排序+PTA L2-012 关于堆的判断

前言 本博客是博主用于复习数据结构以及算法的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 堆排序&#xff08;Heap Sort&#xff09;概念 堆排序是一种基于堆数据结构的排序算法&#xff0c;其核心思想是将待排序的序列构建成一个最大堆&#xff08;或最小…

【C语言基础】:文件操作详解(后篇)

文章目录 一、文件的顺序读写1.1 顺序函数读写函数介绍1.2 fgetc函数和fputc函数1.3 fputs函数和fgets函数1.4 fprintf函数和fscanf函数1.5 fwrite函数和fread函数 二、文件的随机读写2.1 fseek函数2.2 ftell函数2.3 rewind函数 三、文件读取结束的判定3.1 feof函数 四、文件缓…

Linux操作系统的学习

Linux系统的目录结构 / 是所有目录的顶点目录结构像一颗倒挂的树 Linux常用命令 常见命令 序号命令对应英文作用1lslist查看当前目录下的内容2pwdprint work directory查看当前所在目录3cd [目录名]change directory切换目录4touch [文件名]touch如果文件不存在&#xff0c;新…

4. 依赖查找依赖注入

本小节源码&#xff1a;Spring-DI 1. 依赖查找 前面两个小节我们学习了如何将 Bean 对象分别以配置文件与注解的方式存入 Spring 中&#xff0c;然而通过 Bean 从 Spring 容器中取出的过程其实就是依赖查找&#xff0c;这里我简单归纳一下各种依赖查找的方式。 1.1 通过beanI…

【MySQL】索引篇

SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;学习技术栈 个性签名&#xff1a;保留赤子之心也许是种幸运吧 本文封面由 凯楠&#x1f4f8;友情提供 目录 本系列传送门 1. 什么是索引 2. 索引的特性 3. 索引的分类 4. 索引的优点及缺点 优点 缺点 5.…

FPGA基于VCU的H265视频压缩,HDMI2.0输入,支持4K60帧,提供工程源码+开发板+技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的视频图像编解码方案 3、详细设计方案设计框图FPGA开发板视频输入Video PHY ControllerHDMI 1.4/2.0 Receiver SubsystemVideo Processing SubsystemVideo Frame Buffer WriteZynq UltraScale VCUPetaLinux 系统制作VLC播放器工…

ElasticSearch的数据同步【Java实现】

文章目录 1、思路分析1.1、同步调用1.2、异步通知1.3、监听binlog1.4、如何选择 2、实现数据同步2.1、思路2.2、demo2.3、声明交换机、队列1&#xff09;引入依赖2&#xff09;声明队列交换机名称3&#xff09;声明队列交换机 2.4、发送MQ消息2.5、接收MQ消息 3、代码链接分享 …

Quartz + SpringBoot 实现分布式定时任务

文章目录 前言一、分布式定时任务解决方案二、Quartz是什么&#xff1f;1.quartz简介2.quartz的优缺点 二、Quartz分布式部署总结 前言 因为应用升级&#xff0c;由之前的单节点微服务应用升级为集群微服务应用&#xff0c;所以之前的定时任务Spring Scheduled不再适用了&…

蓝桥备赛——组合数、其他技巧

对字符串进行permutations排列组合 from itertools import permutations a abc #对字符串进行permutations排列组合 for i in permutations(a,3):x .join(i)print (x,end ) print (\n------------------------------------) permutations后面的参数&#xff0c;第一个表示…