P1825 [USACO11OPEN]Corn Maze S 题解

2023-05-16

在这里插入图片描述

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

这道题就是一道普通的搜索题,非常非常普通,普通的不能再普通那种,和以前的bfs一样,不过这个bfs要注意一个特判,当弹出的那个元素的是大写字母的时候,要窜梭到对应的大写字母,并且穿梭到了另外一个大写字母以后要将其标记为true,以为之前我们是入队才标记为true,但是这里我们只要一遇到大写字母就要穿越(也就是一遇到大写字母就要改变其坐标,到另一个大写字母的坐标),其他的和一般的搜索题都一样,这大概是假的小绿,下面是AC代码,欢迎大佬前来拍砖

#include <iostream>
#include <queue>
#include <utility>
#include <cstring>
using namespace std;
void go_another(int &x,int &y,char t);
void bfs();
#define  Max 666
char g[Max][Max];
char pos[5][3]={{0,0,0},{0,-1,0},{0,0,1},{0,1,0},{0,0,-1}};
bool flag[Max][Max];
int N,M;
pair<int ,int > beg;
pair<int ,int > en;
struct Node
{
    int x,y,step;
};
    int main()
    {

        memset(flag, false, sizeof(flag));
        cin>>N>>M;//N行M列
        for(int i=1;i<=N;i++)
        {

            for(int j=1;j<=M;j++)
            {
                cin>>g[i][j];
                if(g[i][j]=='@')
                {
                    beg.first=i;
                    beg.second=j;
                }
                if(g[i][j]=='=')
                {
                    en.first=i;
                    en.second=j;
                }
            }
        }
        bfs();
        return 0;
    }


    void bfs()
    {
        Node node;
        node.x=beg.first;
        node.y=beg.second;
        flag[beg.first][beg.second]=true;
        node.step=0;
        queue<Node > que;
        que.push(node);
        while(!que.empty())
        {
            Node temp=que.front();
            que.pop();
            if(temp.x==en.first&&temp.y==en.second)
            {
                cout<<temp.step;
                return ;
            }
            if(g[temp.x][temp.y]>='A'&&g[temp.x][temp.y]<='Z')
            {
                go_another(temp.x,temp.y,g[temp.x][temp.y]);

            }

            for(int i=1;i<=4;i++)
            {
                int nx=temp.x+pos[i][1];
                int ny=temp.y+pos[i][2];
                if(nx>=1&&nx<=N&&ny>=1&&ny<=M&&g[nx][ny]!='#'&&!flag[nx][ny])
                {
                    node.x=nx;
                    node.y=ny;
                    node.step=temp.step+1;
                    que.push(node);
                    flag[nx][ny]=true;
                }
            }

        }

    }


    void go_another(int &x,int &y,char t)
    {
        for(int i=1;i<=N;i++)
        {
            for(int j=1;j<=M;j++)
            {
                if(g[i][j]==t&&(x!=i||y!=j))
                {
                    x=i;
                    y=j;
                    return ;
                }
            }
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

P1825 [USACO11OPEN]Corn Maze S 题解 的相关文章

  • 洛谷 P1825 [USACO11OPEN]Corn Maze S(bfs)

    题目传送 1 这仅仅是一道加了传送门的bfs 2 仅仅加了一个传送门 xff0c 就卡了我一下午 3 门存在不成对的情况 span class token macro property span class token directive
  • P1825 [USACO11OPEN]Corn Maze S 题解

    这道题就是一道普通的搜索题 xff0c 非常非常普通 xff0c 普通的不能再普通那种 xff0c 和以前的bfs一样 xff0c 不过这个bfs要注意一个特判 xff0c 当弹出的那个元素的是大写字母的时候 xff0c 要窜梭到对应的大写
  • P1825 [USACO11OPEN]Corn Maze S——bfs

    USACO11OPEN Corn Maze S 题面翻译 奶牛们去一个 N M N times M N M 玉米迷宫 xff0c 2
  • P1825 [USACO11OPEN]Corn Maze S 【BFS】

    题目描述 This past fall Farmer John took the cows to visit a corn maze But this wasn t just any corn maze it featured severa
  • java corn 定时任务调度,每分钟执行一次,每半个小时执行一次

    java corn 表达式 每分钟执行一次 Scheduled cron 0 1 每半个小时执行一次 Scheduled cron 0 0 30 springboot 类 EnableScheduling Configuration Slf
  • 编程理论:解决迷宫

    解决迷宫问题有哪些可能的方法 我有两个想法 但我认为它们不是很优雅 基地情况 我们有一个矩阵 这个矩阵中的元素以一种代表迷宫的方式排序 有一个入口 一个出口 我的第一个想法是派一个机器人穿过迷宫 跟随一侧 直到走出迷宫 我认为这是一个非常缓
  • 找到穿过迷宫的所有可能路径

    我正在尝试创建一个程序 该程序将遍历一个随机生成的迷宫 其中 1 是开放的 0 是墙壁 从左上角开始 到右下角结束 路径可以向上 向下 向左 向右 目前 我的程序为我提供了一种解决方案 但我无法让它打印多个路径 我已经阅读了这个问题的几个不
  • 生成迷宫的好算法是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 假设你想要一个 N M 网格上的简单迷宫 有一条路径通过 并且有很多死胡同 但这看起来 正确 即就像有人手工制作的 没有太多微小的死胡同和所有这些
  • 递归时变量意外更改?

    Context 我目前正在尝试 Reddit 的 r 每日程序员挑战 这个想法是找到 ASCII 迷宫的解决方案 不幸的是 递归的工作方式与我的预期不同 程序检查是否有空间可以移动到当前空间的右侧 左侧 下方或上方 如果存在 则将空间移动到
  • 在网格上编写随机路径从哪里开始比较合适?

    我不知道从哪里开始 我不是要求别人为我做这件事 但我不知道如何做 所以如果有人能指出我正确的方向 那就太好了 我无法使用谷歌找到任何东西 这就是我需要的 我需要创建一条从网格一侧到另一侧的路径 但不是以随机方式最短 我需要确保如果路径与路径
  • 为迷宫墙添加碰撞

    有人可以帮我向我的精灵添加碰撞点吗 我过去有一个代码 我在图像上分层了位图 但相同的代码不能很好地集成用于物理绘制线条 而不是检测图像上黑色 灰色的位置 import random import pygame pygame init WHI
  • C++中迷宫的DFS最短路径

    我无法弄清楚如何准确地使其发挥作用 我正在尝试使用 DFS 获得到达目标的最短路径 我知道 BFS 更好 但有人要求我使用 DFS 正如您所看到的 我尝试对导致最终的所有堆栈进行比较以找到目标 但它不起作用 只有导致目标的第一个堆栈被打印
  • 简单的 Java 2d 数组迷宫示例

    我正在工作或了解如何创建一个简单的java 二维迷宫应该是这样的 int maze 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 0 1
  • 如何打印迷宫中从源到目标的 BFS 路径

    我正在尝试实现 BFS 以便找到迷宫中从源到目标的最短路径 我遇到的问题是我无法打印路径 它在迷宫中打印为 但是如何从 BFS 的前辈中提取路径而不打印所有访问过的节点 这是我的代码供您编译 include
  • 为什么我的迷宫解算器不起作用?

    我正在尝试编写一个程序 以递归方式解决特定输入的迷宫 并在每次移动后输出它在迷宫中的位置 每当我尝试运行代码时 它都会立即崩溃 并收到 maze exe 已停止工作 错误 为什么我的代码不起作用 include
  • 3D 迷宫中的最短路径

    我正在尝试编写一个程序来使用递归查找 3D 迷宫中的最短路径 我能够编写找到穿过迷宫的随机路径的代码 但我想知道如何修改我的代码以找到最短路径 请注意 我想保留递归方法 有人可以提出解决方案吗 这是一个二维迷宫示例 s XXXX XX X
  • 在Javascript中实现迷宫生成算法[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我了解 深度优先 迷宫生成算法 但我
  • 将简单的单色绘图图像转换为二维文本数组

    我正在尝试开发一种算法 将简单的单线图像 即迷宫 转换为文本二维数组 例如 下面的图像 它将被转换为以下文本数组
  • python中不规则点之间的坐标列表

    想象一下 我们为 x 和 y 随机选择两个介于 0 到 100 之间的点 例如 95 7 35 6 现在使用简单的 pygame draw line 函数 我们可以轻松地在这些点之间绘制一条没有任何间隙的线 我的问题是 我们如何找到两点之间
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li

随机推荐

  • Linux常用命令之软件包管理

    软件包管理 软件包分类 源码包 直接可以看到源码 需要手动编译 安装速度慢 脚本安装包 xff08 部分源码包将安装过程写成脚本 xff0c 交互式安装 xff09 二进制文件包 RPM 系统默认包 已经编译好 安装速度快 rpm命令管理
  • 【Windows11】麦克风不能用、扬声器不能用的解决办法

    这是一个目录0 0 前言扬声器不能用的解决办法麦克风不能用的解决办法 前言 最近笔者刚买的麦克风和扬声器 xff0c 插到电脑上居然不能用 一通排查之后发现原来是Windows系统内的一个设置不对 xff0c 下面是具体解决办法 xff08
  • python django mysql语句增删改查+报错execute() takes from 2 to 3 positional arguments but 4 were given

    python django框架 xff0c 进行增删改查语句 xff1a 1 查询 xff08 1 xff09 正确的写法如下 xff0c cursor execute那句 sql的所有参数 xff0c 应该都写到中括号里面 xff0c 以
  • 方法的形参和实参

    引用博客 博客 何为形参 实参 xff1a 方法定义时的参数称为形式参数 xff0c 简称形参 xff1b 方法调用时的传入参数称为实际参数 xff0c 简称实参 xff1b 实参和形参的类型要一致或兼容 个数 顺序必须一致 例如 span
  • 在linux(debian/ubuntu)中idea的插件默认安装位置和配置文件在哪里?亲测可用

    在 home 当前用户名 config JetBrains IntelliJIdea2020 具体版本号 options 目录下 我的debian10 其他的linux系统应该也在相同的位置
  • 中国电信修改光猫路由模式为桥接模式

    首先 需要搞到超级管理员的账号和密码 可以上网根据光猫型号查找 也可以直接跟安宽带的工作人员要 第一步 准备超级管理员账号和密码 可以自行根据光猫型号搜索 也可以直接跟安宽带的工作人员要 第二步 使用超级管理员账密登录网关管理页面 光猫 一
  • maven官网应该下载binary还是sources

  • Linux(Debian11)iptables放行所有端口

    iptables P INPUT ACCEPT iptables P OUTPUT ACCEPT iptables P FORWARD ACCEPT
  • mysql日期加一天

    使用函数 date add 日期 interval 1 day 即可 select DATE ADD 39 2022 02 24 09 03 36 39 INTERVAL 1 DAY select DATE ADD 39 2022 02 2
  • Debian安装mysql

    Debian 10系统中默认使用了MariaDB xff0c 在APT的软件源中并没有mysql 所以 xff0c Debian 10 如果要安装mysql xff0c 需要下载安装Mysql APT Repository xff0c 更新
  • mysql设置忽略大小写

    在连接数据库的时候发现库里有表的名字只是大小写不一样 xff0c 但就是连不上 xff0c 我用的是mysql5 7 8 默认没有开启忽略大小写 xff0c 这里记录一下 1 查看数据库大小写配置 show variables like 3
  • Linux(debian)常用代理设置

    不管实在开发还是在日常使用中 xff0c 梯子是必不可少的工具 xff0c 但是在linux系统中 xff0c 有时候操作起来不是那么方便 xff0c 于是在此做个笔记 0x01 环境变量设置 设置代理 xff1b echo 39 expo
  • linux(Debian11)安装后安装无线网卡等驱动

    在工作和生活中 xff0c 我们经常会用到linux系统 xff0c debian作为一个老牌的程序员常用发行版 xff0c 自然成为我们的首选 下面记录一下 xff0c 安装无线网卡的过程 首先 xff0c 可以通过命令查看自己所需要的驱
  • 基于深度学习的知识追踪研究进展 Research Advances in the Knowledge Tracing Based on Deep Learning

    8 基于深度学习的知识追踪研究进展 Research Advances in the Knowledge Tracing Based on Deep Learning 摘要 xff1a 知识追踪是教育数据挖掘领域的一个重要研究方向 xff0
  • Tomcat控制台弱密码漏洞

    文章目录 一 漏洞介绍1 1 漏洞原理1 2 影响版本1 3 触发条件 二 环境搭建2 1 环境信息2 2 tomcat配置2 3 配置漏洞环境 三 攻击过程3 1 控制台弱密码3 2 冰蝎控制 四 漏洞修复 一 漏洞介绍 1 1 漏洞原理
  • linux(debian11)系统安装那些事儿--没有无线网需要安装无线网卡驱动双显卡等问题

    linux在日常的工作和生活中是经常用到的 xff0c 在安装的时候 xff0c 和windows不太一样 xff0c 有些驱动是需要我们自己手动安装的 xff0c 但是也并不麻烦 这里记录一下 xff0c 一种很简单的安装intel无线网
  • java线程编排CompletableFuture

    在开发中偶尔也会需要用到线程编排 比如查询商品数据 查询商品规格信息和商品图片耗时分别是1 2s和5s 如果是异步执行 那么就可以使用5s完成查询了 而不是6 2s 这里记录一下 CompletableFuture完成线程编排 import
  • dump数据库导表线上服务无响应

    有时候 有些场景下 我们需要拷贝线上的数据 进行本地测试 如果你用的是dbeaver工具操作数据库 在拷贝数据库的时候容易导致服务器没响应 看服务正常运行 但是前端访问就是没反应 服务器也没欠费 这是什么情况呢 就是mysql在进行dump
  • 多线程之如何设计线程数量

    创建多少线程合适 xff0c 要看多线程具体的应用场景 一般来说 xff0c 我们可以将程序分为 xff1a CPU密集型程序和I O密集型程序 xff0c 而针对于CPU密集型程序和I O密集型程序 xff0c 其计算最佳线程数的方法是不
  • P1825 [USACO11OPEN]Corn Maze S 题解

    这道题就是一道普通的搜索题 xff0c 非常非常普通 xff0c 普通的不能再普通那种 xff0c 和以前的bfs一样 xff0c 不过这个bfs要注意一个特判 xff0c 当弹出的那个元素的是大写字母的时候 xff0c 要窜梭到对应的大写