G.AB路线【蓝桥杯】/bfs+可重复走

news2024/11/25 0:43:51

AB路线

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

bfs+可重复走

思路:本题和传统的bfs题目不同,本题为了满足题目先走K个A再走K个B,可能需要重复走某个格子才能继续走下去,故vis数组可以多开一维,vis[x][y][z]表示第z次走到x行y列这种情况是否出现过
A A A B B B A A A
0 1 2 3 4 5 6 7 8
比如到7这个时,6%(2*k)=0,表示是k次中第0次到达,如果前面已经出现过k次中第0次到达该点这种情况则代表重复了,不行

#include<iostream>
#include<queue>
using namespace std;
struct node
{
    int x,y,path;
};
char a[1005][1005];
int xx[4]={0,1,0,-1};
int yy[4]={1,0,-1,0};
int vis[1005][1005][12];
int main()
{
    int n,m,k;
    cin>>n>>m>>k;
    for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>a[i][j];
    if(a[0][0]!='A')
    {
        cout<<-1<<endl;
        return 0;
    }
    queue<node> q;
    q.push({0,0,0});
    vis[0][0][0]=1;
    bool flag=0;
    int res;
    while(!q.empty())
    {
        int x=q.front().x;
        int y=q.front().y;
        int p=q.front().path;
        q.pop();
        //p表示现在是要走第几步
        p++;
        char c;
        //当可以整除k时表示要改变字符
        if(p%k==0) 
        {
            (a[x][y]=='A')?c='B':c='A';
        }
        else 
        {
            c=a[x][y];
        }
        for(int i=0;i<4;i++)
        {
            int nx=x+xx[i];
            int ny=y+yy[i];
            if(nx<0||nx>=n||ny<0||ny>=m) continue;
            //p%(2*k)表示现在是k次中第几次走到该点(从0开始)
            if(vis[nx][ny][p%(2*k)]) continue;
            if(a[nx][ny]!=c) continue;
            q.push({nx,ny,p});
            vis[nx][ny][p%(2*k)]=1;
            if(nx==n-1&&ny==m-1) 
            {
                flag=1;
                res=p;
                break;
            }
        }
        if(flag) break;
    }
    if(flag) cout<<res<<endl;
    else cout<<-1<<endl;
    return 0;
}

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

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

相关文章

最新版在线客服系统源码

源码介绍 首发最新在线客服系统源码&#xff0c;优化更好并且重构源码布局UI 性能不吃cpu并发快,普通1H2G都能带动最新版只要是服务器都能带动 搭建即可使用,操作简单,易懂 修复了老版本bug 内附有搭建教程 gofly.v1kf.com 运行环境 Nginx 1.20 MySQL 5.7 演示截图

搜索的未来:OpenAI 的 GPT 如何彻底改变行业

搜索的未来&#xff1a;OpenAI 的 GPT 如何彻底改变行业 概述 搜索引擎格局正处于一场革命的风口浪尖&#xff0c;而 OpenAI 的 GPT 处于这场变革的最前沿。最近出现了一种被称为“im-good-gpt-2-chatbot”的神秘聊天机器人&#xff0c;以及基于 ChatGPT 的搜索引擎的传言&am…

MySQL企业级开发重点之事物和索引

事物 -- 解散学工部 delete from tb_dept where id 1;-- 删除部门下的员工 delete from tb_emp where dept_id 1; 介绍和操作 我们应该将两个语句写成一个语句 -- 开启事物 start transaction ;-- 解散学工部 delete from tb_dept where id 3;-- 删除部门下的员工 delete fr…

开源框架平台:功能优势多,助力数字化转型!

伴随着科技越来越发达&#xff0c;低代码技术平台、开源框架平台逐渐在各中小型企业里获得重视和青睐&#xff0c;成为助力企业实现流程化办公&#xff0c;进入数字化转型的的有力武器。在众多服务商中&#xff0c;谁拥有市场竞争力&#xff0c;谁在服务和产品方面更具核心价值…

ASP.NET网上图书订阅系统的设计

摘 要 网上图书订阅系统基于 Microsoft SQL Server 2000和ASP.NET平台&#xff0c;以C#为编程语言开发,实现了网上图书预订和借阅&#xff0c;订阅信息查询&#xff0c;图书和用户信息的修改&#xff0c;借阅排行和新到图书的查询等功能&#xff0c;这样不但可将管理员从繁重…

鸿蒙ArkUI-X跨平台开发电商应用

一、ArkUI-X 简介 ArkUI-X 是由 OpenHarmony TSC - 跨平台应用开发框架 TSG 所孵化的开源项目,使用ArkUI-X可以让开发者基于一套主代码, 就可以构建支持多平台的精美、高性能应用。目前支持OpenHarmony、HarmonyOS、Android、 iOS,后续会逐步增加更多平台支持。 ArKUI跨平台…

5款AI工具推荐

当下AI大行其道&#xff0c;各种神奇的工具层出不穷。除了ChatGPT、Midjourney等耳熟能详的明星产品&#xff0c;还有不少可圈可点的AI应用值得一提。 Kimi 这是一款基于GPT技术的国产对话AI&#xff0c;对中文的理解和生成能力相当出色。不管是闲聊对话&#xff0c;还是应对…

SQL编程 (变量的定义与使用)

一、标识符的命名规范 1不能数字开头 2不允许保留关键字 3符号只允许_或$ 二、变量的声明 set用于声明变量&#xff0c;update声明修改的表&#xff0c;set是声明修改的列。 set userName大聪明; select userName as 名称; 可以简便的统写为 set userName:大聪明; 先建…

Hive Windows Functions 窗口函数

Hive Windows Functions 窗口函数 在 Hive 中&#xff0c;窗口函数&#xff08;Window Functions&#xff09;用于在查询结果中执行聚合、排序和分析操作&#xff0c;而无需将数据分组。窗口函数允许你在查询结果中的一组行上执行计算&#xff0c;而不会改变原始数据的行数&am…

如何做好产业园运营?树莓集团成都数字产业园运营模式全解析

如何做好产业园运营&#xff1f;本篇将对树莓集团产业园运营模式进行介绍&#xff0c;并详情分析旗下运营代表案例&#xff0c;成都数字产业园运营——国际数字影像产业园。 树莓集团作为数字产业生态链建设者&#xff0c;秉持高效、友善、敢为的集团核心文化&#xff0c;有效链…

免费的国内版 GPT 推荐,5个国产ai工具

提起AI&#xff0c;大家第一个想到的就是GPT。 虽然它确实很厉害&#xff0c;但奈何于我们水土不服&#xff0c;使用门槛有些高。 不过随着GPT的爆火&#xff0c;现在AI智能工具已经遍布到各行各业了&#xff0c;随着时间的推移&#xff0c;国内的AI工具也已经“百花盛放”了…

ImportError: cannot import name ‘compare_mse‘ from ‘skimage.measure‘

问题描述 在复现模型代码的时候遇到错误&#xff1a;ImportError: cannot import name compare_mse from skimage.measure 。 解决方案 这是由于 scikit-image 的版本问题&#xff0c;由于scikit-image版本升级后就修改了库函数。 方法1&#xff08;修改scikit-image版本&…

【数据分析面试】40.20个数据开发治理基础问题

在当今数字化时代&#xff0c;数据已成为企业最重要的资产之一 。如何管理数据、确保数据的安全性和质量&#xff0c;以及如何有效地利用数据来推动业务发展&#xff0c;这些都是我们面临的挑战。 目录 数据开发基础概念1. **什么是数据字典&#xff1f;它在数据管理和数据开发…

Excel——项目管理,设置时间到期自动提醒及颜色高亮

效果图 第一步、自动获取合同到期日期 1、首先合同【签约日期】和【到期日期】下面的数据必须是日期格式&#xff0c;不能是其它的格式否则无法计算&#xff0c;如果是其它格式需要转换成标准的日期格式&#xff0c;如下图所示。 2、在“到期日期”下面的第一个单元格中输入公…

地埋式可燃气体监测终端,地下燃气管网安全“哨兵”

在现代都市的繁华之下&#xff0c;一条条地下燃气管网承载着城市的生命与活力&#xff0c;但管网老化腐蚀&#xff0c;第三方施工破坏&#xff0c;巡检维修不到位等问题&#xff0c;时刻影响着燃气管网安全运行&#xff0c;甚至威胁人民群众的生命财产安全。 为实现对燃气管网…

Mac YOLO V9推理测试(基于ultralytics)

环境&#xff1a; Mac M1 (MacOS Sonoma 14.3.1) Python 3.11PyTorch 2.1.2 一、准备工作 使用YOLO一般都会接触ultralytics这个框架&#xff0c;今天来试试用该框架进行YOLO V9模型的推理。 YOLOv9目前提供了四种模型下载&#xff1a;yolov9-c.pt、yolov9-e.pt、gelan-c.p…

C++ 多态的相关问题

目录 1. 第一题 2. 第二题 3. inline 函数可以是虚函数吗 4. 静态成员函数可以是虚函数吗 5. 构造函数可以是虚函数吗 6. 析构函数可以是虚函数吗 7. 拷贝构造和赋值运算符重载可以是虚函数吗 8. 对象访问普通函数快还是访问虚函数快 9. 虚函数表是什么阶段生成的&…

Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案

文章目录 一、vue中使用el-table的typeindex有时不显示序号Table 表格显示索引自定义索引报错信息解决方案 二、vue中Missing required prop: “value” 报错报错原因解决方案 三、el-table的索引值index在翻页的时候可以连续显示方法一方法二 四、vue3中Element Plus全局组件配…

安卓开发--环境配置

本次项目选择使用 Andrio Studio 进行开发。虽然这款软件版本更新也很快。不过开发一款APP的技术流程是大差不差的。我几年前的安卓笔记放到现在还是能用。 现在CSDN网上写一个笔记留作以后参考&#xff0c;开始吧&#xff01;&#xff01;&#xff01; 1 安装 Andrio Studio …

大数据------JavaWeb------Tomcat(完整知识点汇总)

Web服务器——Tomcat Web服务器定义 它是一个应用程序&#xff08;软件&#xff09;&#xff0c;对HTTP协议的操作进行封装&#xff0c;使得程序员不必直接对协议进行操作&#xff0c;让Web开发更便捷 Web服务器主要功能 封装HTTP协议操作&#xff0c;简化开发将Web项目部署到…