【华为上机题】森林小熊寻路

2024-02-05 23:58

本文主要是介绍【华为上机题】森林小熊寻路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

描述:小熊要在一个R*C维矩阵形状的森林里从B点出发,执行任务,到H点去,在森林里有可能会存在小溪等障碍物(用“#”表示),畅通的路径点用“-”表示,森林里面行走规则:只能向前后左右四个方向行走,现在问小熊能否成功的完成任务,若能,则输出YES,否则输出NO。

输入:

R

C

--#--#

B----H

#--#--


输出:

成功:YES

失败:NO


输入示例:

3

3

###

B-H

###

输出:

YES

1

5

B---H

输出:

YES

思想:建立一个R*C维bool数组,对应于矩阵中的每一个点,只有当点时“#”是,取值为false,其余情况均取值为true,从B点递归的判断B的上下左右四个点的状态,在每次递归前都得将已走过的路径点置为false,以防止重复走向相同的路径点,当判定到当前点出了矩阵边界或者为障碍物时则返回false,当已经到达H点时,返回true。

#include<iostream>
using namespace std;
bool isAble(bool **flag,int R,int C,int bi,int bj,int hi,int hj){if(bi<0||bj<0||bi>=R||bj>=C)//出矩阵边界时return false;if(flag[bi][bj]==false)//已访问过或者当前点为障碍物时return false;if(bi==hi&&bj==hj)return true;flag[bi][bj]=false;//当前点已走过,将其置为falsebool up=isAble(flag,R,C,bi-1,bj,hi,hj);//向上走是否可行bool down=isAble(flag,R,C,bi+1,bj,hi,hj);//向下走是否可行bool left=isAble(flag,R,C,bi,bj-1,hi,hj);//向左走是否可行bool right=isAble(flag,R,C,bi,bj+1,hi,hj);//向右走是否可行return up||down||left||right;//只要有一条路径可行则可以到达
}int main(void){while(true){int R,C;int bi,bj,hi,hj;cin>>R>>C;char ch;bool **flag = new bool*[R];for(int i=0;i<R;i++){flag[i]=new bool[C]; }for(int i=0;i<R;i++)for(int j=0;j<C;j++){cin>>ch;if(ch=='#')flag[i][j]=false;else {flag[i][j]=true;if(ch=='B'){bi=i;bj=j;}if(ch=='H'){hi=i;hj=j;}}}if(isAble(flag,R,C,bi,bj,hi,hj))cout<<"YES"<<endl;elsecout<<"NO"<<endl;system("pause");delete[] flag;}	return 0;
}


这篇关于【华为上机题】森林小熊寻路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/682558

相关文章

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

华为 HCIP-Datacom H12-821 题库 (13)

有需要题库的可以看主页置顶 1.可以携带外部路由的 tag 标签信息的是以下哪一类 LSA? A、4 类 LSA B、5 类 LSA  C、3 类 LSA  D、2 类 LSA 答案:B 解析: 暂无解析 2..两台路由器直连,并设定网络类型为 p2p 建立OSPF 邻居。那么两台路由器传输 OSPF 报文的目的 IP 地址是以下哪一项? A、使用组播地址 224.0.0.6 B

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消

华为23年笔试题

消息传输 题目描述 在给定的 m x n (1 <= m, n <= 1000) 网格地图 grid 中,分布着一些信号塔,用于区域间通信。 每个单元格可以有以下三种状态:  值 0 代表空地,无法传递信号;  值 1 代表信号塔 A,在收到消息后,信号塔 A 可以在 1ms 后将信号发送给上下左右四个方向的信号塔; 值 2 代表信号塔 B,在收到消息后,信号塔 B 可以在 2ms

实现的动态规划问题华为笔试题C++实现

秋招刷力扣题,我觉得我对动态规划不是熟练,在此处做总结 动态规划(Dynamic Programming,DP)算法通常用于求解某种具有最优性质的问题。在这类问题中,可能会有许多可行解,每一个解都对应一个值,我们希望找到具有最优值的解。我觉得最大的问题就是对问题的分解,分解后的问题与分解前的问题具有相同的决策机制,将决策机制进行抽象,最终可以得到对应的解; 动态规划中开始介绍的爬楼梯等问题,答