1. AB路线-BFS+分层图

0AB路线 - 蓝桥云课 (lanqiao.cn)

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
int n,m,k;
//存迷宫格子
char board[1005][1005];
//vis[i][j][k]存坐标(i,j)的格子,在一个周期中第k次经过它
bool vis[1005][1005][15];
//移动的向量
int move_hang[4]={0,1,0,-1},move_lie[4]={1,0,-1,0};
struct Node{
	int x;//坐标
	int y;
	int cnt;//当前第几步了
};
int bfs(){
	queue<Node> q;
	q.push({0,0,1});
	vis[0][0][1]=true;
	while(q.size()){
		auto t=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			int xx=t.x+move_hang[i],yy=t.y+move_lie[i];
			if(xx<0||yy<0||xx>=n||yy>=m) continue;//保证下标不越界
			if(vis[xx][yy][(t.cnt+1+k-1)%k+1]) continue;//保证不重复,第三维的算法自己画个图模拟模拟就知道什么意思了
			int p=(t.cnt+1+k-1)/k%2;//自己画个图模拟模拟就知道什么意思了
			//p为1 该步应该走A
			if(p==1){
				if(board[xx][yy]!='A') continue;
				else{
					q.push({xx,yy,t.cnt+1});
					vis[xx][yy][(t.cnt+1+k-1)%k+1]=true;
				}
			}
			//p为2 该步应该走B
			else{
				if(board[xx][yy]!='B') continue;
				else{
					q.push({xx,yy,t.cnt+1});
					vis[xx][yy][(t.cnt+1+k-1)%k+1]=true;
				}
			}
//			cout<<xx<<" "<<yy<<endl;
			if(xx==n-1&&yy==m-1){//走到迷宫右下角
				return t.cnt;
			}
		}
	}
	return -1;
}
void solve(){
	cin>>n>>m>>k;
	for(int i=0;i<n;i++){
		string str;
		cin>>str;
		for(int j=0;j<m;j++){
			board[i][j]=str[j];
		}
	}
	cout<<bfs();
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	solve();
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux 网络管理 实验

目录 网络管理主机名管理网络管理 网络管理 主机名管理 执行如下命令查看主机名。 [rootopenEuler ~]# hostname openEuler [rootopenEuler ~]# cat /etc/hostname #这个文件是主机名的配置文件 openEuler执行如下命令临时修改主机名。 [rootopenEuler ~]# hostname huawe…

(四十二)第 6 章 树和二叉树(树的二叉链表(孩子-兄弟)存储)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrch…

MySQL的msi格式安装

一、下载链接 MySQL :: Download MySQL Installer (Archived Versions) 二、安装步骤 ①选择自定义安装 ②选择要安装的产品 ③安装依赖环境 ④安装 ⑤点击下一步 ⑥配置 ⑦设置密码 ⑧命名 ⑨数据存放路径 ⑩安装配置 ①①配置环境变量 ①②验证 方法一&#xff1a; 方法二…

【软考】设计模式之桥接模式

目录 1. 说明2. 应用场景3. 结构图4. 构成5. 适用性6. 优点7. 缺点8. java示例 1. 说明 1.将抽象部分与其实现部分分离&#xff0c;使它们都可以独立地变化。2.桥接模式&#xff08;Bridge Pattern&#xff09;属于对象结构型模式&#xff0c;又称为柄体&#xff08;Handle an…

C#中json数据序列化和反序列化的最简单方法(C#对象和字符串的相互转换)

文章目录 将C#对象转换为json字符串Newtonsoft模块的安装用Newtonsoft将对象转换为json字符串 将json字符串转换为C#对象 将C#对象转换为json字符串 本介绍将基于C#中的第三方库Newtonsoft进行&#xff0c;因此将分为Newtonsoft模块的安装和使用两部分。该模块的优势在于只需要…

PCB笔记(二十六):PCB检查

前言 首先检查元器件是否100&#xff05; 放置 文章目录 1、打开DRC2、database check3、检查DRC4、检查多余的线5、其他需要注意的点a.检查差分线、等长线是否已调好b.注意检查晶振、电感等元件上/下方是否其他线经过&#xff08;一般不允许线经过&#xff09;c.打开place_bo…

node安装以及node的包管理工具

node安装以及node的包管理工具 node安装nvm管理工具 node安装 1、下载node链接: 点击这里 2、选择需要下载的版本以及对应的系统版本 nvm管理工具 1、下载nvm链接: 点击这里 2、双击运行.exe文件 全部默认安装即可 3、nvm常用命令 nvm list avaliable 显示所有可以下载的n…

umi项目配置之项目构建时配置umirc.ts

对于 umi 中能使用的自定义配置&#xff0c;你可以使用项目根目录的 .umirc.ts 文件或者 config/config.ts&#xff0c;值得注意的是这两个文件功能一致&#xff0c;仅仅是存在目录不同&#xff0c;2 选 1 &#xff0c;.umirc.ts 文件优先级较高 umi 的配置文件是一个正常的 n…

ACM实训冲刺第七天

【碎碎念】今天开始做第2套的习题 Anton and Danik 问题 安东喜欢下棋&#xff0c;他的朋友丹尼克也喜欢下棋。 一旦他们连续玩了n局。每场比赛都知道谁是赢家——安东还是丹尼尔。没有一场比赛以平局结束。 现在安东想知道&#xff0c;谁赢了更多的比赛&#xff0c;他还是丹…

【数据可视化01】matplotlib实例介绍4之六边形分箱图

目录 一、引言二、实例介绍 一、引言 hexbin是一个二维直方图&#xff0c;其中箱子是六边形&#xff0c;颜色表示每个箱子内的数据点数。 二、实例介绍 import matplotlib.pyplot as plt import numpy as np# Fixing random state for reproducibility np.random.seed(19680…

jmeter中java请求,解决不支持协议和元件,实现自定义元件

目录 java请求 作用场景 JavaTest类源码分析 编写java请求样例 新建java工程&#xff0c;导入jmeter主要依赖。 编写java请求类&#xff0c;继承AbstractJavaSamplerClient, 导入工程为jar包&#xff0c;放置jmeter安装目录下lib/ext目录 重启jmeter&#xff0c;添加ja…

Notepad8.1.9汉化中文版

下载地址&#xff1a;Notepad8.1.9.zip 一款优秀免费的源代码编辑器&#xff0c;支持语法高亮的开源纯文本编辑器&#xff0c;并且可以替代系统自带的记事本的功能。

线程纵横:C++并发编程的深度解析与实践

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的Linux高性能服务器编程系列之《线程纵横&#xff1a;C并发编程的深度解析与实践》&#xff0c;在这篇文章中&#xff0c;你将会学习到C新特性&#xff0c;并发编程&#xff0c;以及其如何带来的高性能的魅力&#xff0…

【经验总结】超算互联网服务器 transformers 加载本地模型

1. 背景 使用 超算互联网 的云服务&#xff0c;不能连接外网&#xff0c;只能把模型下载到本地&#xff0c;再上传上去到云服务。 2. 模型下载 在 模型中 https://huggingface.co/models 找到所需的模型后 点击下载 config.json pytorch_model.bin vocab.txt 3. 上传模型文…

HTML特殊字符

特殊字符 有特殊含义的字符成为字符实体 对于有特殊含义的字符,需要通过转移字符来表示 <span> <br><a href"http://www.atguigu.com">我 爱 前端</a> <br>&amp;amp; 效果

HTML常用标签-布局相关标签

布局标签 div标签 俗称"块",主要用于划分页面结构,做页面布局 自己独占一行的元素&#xff0c;设置宽高生效 span标签 俗称"层",主要用于划分元素范围,配合CSS做页面元素样式的修饰 不会自己独占一行的元素&#xff0c;设置宽高不生效 代码 <div style&…

两小时看完花书(深度学习入门篇)

1.深度学习花书前言 机器学习早期的时候十分依赖于已有的知识库和人为的逻辑规则&#xff0c;需要人们花大量的时间去制定合理的逻辑判定&#xff0c;可以说是有多少人工&#xff0c;就有多少智能。后来逐渐发展出一些简单的机器学习方法例如logistic regression、naive bayes等…

【多模态】30、Monkey | 支持大尺寸图像输入的多任务多模态大模型

文章目录 一、背景二、方法2.1 Enhancing Input Resolution2.2 Multi-level Description Generation2.3 Multi-task Training 三、效果3.1 Image Caption3.2 General VQA3.3 Scene Text-centric VQA3.4 Document-oriented VQA3.5 消融实验3.6 可视化 论文&#xff1a;Monkey : …

maven找不到依赖,in offline mode

问题描述&#xff1a; [ERROR] Plugin org.jetbrains.kotlin:kotlin-maven-plugin:1.2.71 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.jetbrains.kotlin:kotlin-maven-plugin:jar:1.2.71: Cannot access aliyunmaven (ht…

硅胶可以镭射吗?

在科技发展的今天&#xff0c;我们经常会遇到各种各样的材料&#xff0c;其中就有一种叫做硅胶的材料。那么&#xff0c;硅胶可以镭射吗&#xff1f;答案是肯定的&#xff0c;硅胶不仅可以镭射&#xff0c;而且在某些应用中&#xff0c;它的镭射特性还非常突出。 首先&#xff…