华为OD机试真题——战场索敌(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

article/2025/8/19 12:31:45

在这里插入图片描述

2025 A卷 100分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《战场索敌》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C

GO


题目名称:战场索敌


知识点:深度优先搜索(DFS)、广度优先搜索(BFS)、逻辑处理
时间限制:1秒
空间限制:256MB
限定语言:不限


题目描述

有一个大小为N×M的战场地图,被墙壁 # 分隔成不同的区域。上下左右四个方向相邻的空地 . 属于同一区域,只有空地上可能存在敌人 E。要求统计地图中敌人数小于K的区域数量

输入描述

  • 第一行输入三个整数N、M、K,分别表示地图的行数、列数和目标敌人数阈值(N, M ≤ 100)。
  • 接下来输入一个N×M的字符数组,表示战场地图,包含字符 #(墙壁)、.(空地)、E(敌人)。

输出描述

  • 输出一个整数,表示敌人数小于K的区域数量。

示例
输入:

3 5 2  
..#EE  
E.#E.  
###..  

输出:

1  

说明

  • 地图被墙壁分为两个区域:左侧区域有1个敌人,右侧区域有3个敌人,仅左侧区域满足条件。

输入约束

  • 输入保证每个区域的敌人数量为非负整数。
  • 任意两个敌人位置不重叠。

Java

问题分析

题目要求统计战场地图中被墙壁分隔的各个区域中,敌人数小于给定阈值的区域数量。每个区域由上下左右相邻的空地(包括敌人所在位置)组成,我们需要遍历每个区域并统计其中的敌人数。

解题思路

  1. 输入处理:读取地图的行数、列数和阈值K,然后读取地图数据。
  2. 遍历地图:使用双重循环遍历每个地图位置。
  3. 区域标记与统计:对于每个未被访问且非墙壁的位置,使用广度优先搜索(BFS)遍历整个区域,统计区域内的敌人数量。
  4. 判断条件:如果当前区域的敌人数小于K,则计入结果。
  5. 输出结果:统计符合条件的区域数量并输出。

代码实现

import java.util.Scanner;
import java.util.Queue;
import java.util.LinkedList;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取输入参数 N, M, Kint N = scanner.nextInt();int M = scanner.nextInt();int K = scanner.nextInt();scanner.nextLine(); // 跳过换行符// 读取战场地图数据char[][] grid = new char[N][M];for (int i = 0; i < N; i++) {String line = scanner.nextLine().trim();for (int j = 0; j < M; j++) {grid[i][j] = line.charAt(j);}}// 标记数组,记录每个位置是否被访问过boolean[][] visited = new boolean[N][M];int count = 0; // 符合条件的区域数量// 方向数组,用于BFS遍历四个方向int[] dx = {-1, 1, 0, 0};int[] dy = {0, 0, -1, 1};// 遍历地图中的每个位置for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {// 如果当前位置是墙壁或已被访问,跳过if (grid[i][j] == '#' || visited[i][j]) {continue;}// BFS初始化Queue<int[]> queue = new LinkedList<>();queue.offer(new int[]{i, j});visited[i][j] = true;int cnt = 0; // 当前区域的敌人数// 如果当前起始位置是敌人,计数加1if (grid[i][j] == 'E') {cnt++;}// BFS遍历while (!queue.isEmpty()) {int[] curr = queue.poll();int x = curr[0];int y = curr[1];// 遍历四个方向for (int k = 0; k < 4; k++) {int nx = x + dx[k];int ny = y + dy[k];// 检查新位置是否合法且未被访问,且不是墙壁if (nx >= 0 && nx < N && ny >= 0 && ny < M && !visited[nx][ny] && grid[nx][ny] != '#') {visited[nx][ny] = true;// 如果是敌人,计数加1if (grid[nx][ny] == 'E') {cnt++;}queue.offer(new int[]{nx, ny});}}}// 判断当前区域的敌人数是否小于Kif (cnt < K) {count++;}}}// 输出结果System.out.println(count)

http://www.hkcw.cn/article/SJaHNKPDoA.shtml

相关文章

企业文件乱、传输慢?用群晖 NAS 构建安全高效的共享系统

在信息化办公不断加速的今天&#xff0c;企业对文件存储、共享与安全管理的需求愈发严苛。传统文件共享方式效率低下、权限混乱、远程访问困难&#xff0c;极大影响了协同办公效率。此时&#xff0c;一套可靠、高效、安全的文件共享解决方案便成为众多企业的“刚需”。 这正是…

IDEA项目推送到远程仓库

打开IDEA——>VCS——>Creat Git 选择项目 push提交到本地 创建远程仓库 复制地址 定义远程仓库 推送 推送成功

被院士当年的毕业论文惊艳到 深耕科技育英才

被院士当年的毕业论文惊艳到 深耕科技育英才!在南京大学,有一群杰出的学者致力于国家重大需求和世界科技前沿的研究。他们不仅在科研道路上不断探索,还培养了大量青年科学家。在中国科学院学部成立70周年及第九个“全国科技工作者日”之际,中国科学院推出了“遇见先生”系列…

加拿大多地野火肆虐进入紧急状态 武装部队驰援

加拿大多地野火肆虐进入紧急状态 武装部队驰援!近日,加拿大多地遭受野火侵袭。中部马尼托巴省于28日宣布进入紧急状态,政府将派遣武装部队前往救援。5月25日,在加拿大艾伯塔省斯旺希尔斯附近,野火燃烧引发滚滚浓烟。同月27日,麦克默里堡附近的野火也产生了大量浓烟。此外…

GESP2024年6月认证C++二级( 第三部分编程题(2)计数)

参考程序&#xff1a; #include <iostream> using namespace std;// 函数 check(x, y)&#xff1a;统计一个整数 x 中有多少位是数字 y int check(int x, int y) {int cnt 0; // 统计 y 出现的次数while (x > 0) { // 逐位处理 x 中的每一位int tmp x % …

手动移植FreeRTOS

好记性不如烂笔头&#xff0c;之前也移植时一直忘记记录一下&#xff0c;这次刚好项目用上就步步记录一下防止下次忘记&#xff0c;同时也希望对同行有所帮助&#xff0c;不求别的只为一个点赞和关注&#xff0c;就能给我带来极大的虚荣心和情绪价值&#xff0c;谢谢。 第一步…

决策分析工具篇

为了便于决策分析绘图&#xff0c;开发了影响图和决策树的绘图工具&#xff0c;用于学习和演练。 1.支持不同类型的节点&#xff0c;对于不确定性节点的概率和要求为1. 2.支持连接线。 3.支持导出绘图为图片 4.不存储用户数据&#xff0c;即时使用。 影响图提供了一种紧凑且直…

国际乒联选举现场乱成一锅粥 投票争议引发混乱

国际乒联选举现场乱成一锅粥。当地时间5月27日,2025年国际乒联代表大会在卡塔尔多哈召开期间,因主席选举争议导致会议临时暂停。投票过程中,现任主席佩特拉索林以104票的微弱优势连任,而卡塔尔候选人艾哈迈德哈利勒阿尔穆罕纳获得102票落选。卡塔尔一方对选举过程表示不满,…

胖东来红内裤案宣判,被告段某赔偿40万 名誉权纠纷落锤

2025年5月28日,许昌市魏都区人民法院公开审理了许昌市胖东来商贸集团有限公司与段某之间的名誉权纠纷案,并当庭宣判。法院判决段某在其个人抖音账号“两个小段(小)”发布经法院审核的书面道歉信视频,且该视频在发布后30日内不得删除;同时,段某需赔偿许昌市胖东来商贸集团…

俞敏洪骑车摔倒深夜发文回应 报平安继续前行

俞敏洪骑车摔倒深夜发文回应!5月29日,新东方创始人、东方甄选董事长兼CEO俞敏洪在青海骑行时摔倒,膝盖等处磕破出血。他正在挑战360公里环青海湖骑行,在海拔3200米以上骑行100公里,爬坡700米以上。30日凌晨1点多,俞敏洪发微博报平安:“29日骑车有点睡着了摔了一下,感谢…

博主向胖东来道歉视频30天不能删 名誉权案判决结果

2025年5月28日,河南许昌市魏都区人民法院公开审理了原告许昌市胖东来商贸集团有限公司与被告段某的名誉权纠纷案,并当庭宣判。法院判决段某在其个人抖音账号“两个小段(小)”上发布书面道歉信视频,内容需经法院审核,且发布后30日内不得删除;段某还需赔偿许昌市胖东来商贸…

web ui自动化工具playwright

playwright是微软开源的一款web ui自动化工具&#xff0c;该工具有很多亮点&#xff0c;解决以前困扰web UI自动化测试的很多难点。这篇博客将介绍playwright主要特点。 playwright支持录制减少了编写成本 如果要使用playwright的录制功能&#xff0c;有两种途径&#xff0c;途…

刘若英执导新剧被指抄袭 剧情结构引争议

近日,刘若英自编自导的新剧《忘了我记得》被指抄袭美剧《了不起的麦瑟尔夫人》。有人指出两部剧的情节和结构非常相似,甚至人物设定也存在重叠。批评者认为,《忘了我记得》不仅在整体框架上模仿了《了不起的麦瑟尔夫人》,而且喜剧段子和单口部分也没有达到预期效果。特别是…

陈伟跨市调任廊坊三河市委书记 新职务开启新篇章

陈伟近日已从河北保定蠡县县委书记调任廊坊三河市委书记。公开资料显示,陈伟1975年11月出生,河北安国人,1996年11月参加工作,1997年7月加入中国共产党,拥有省委党校研究生学历。陈伟长期在保定市工作,历任多个职务,包括安国市纪检委常务副书记、监察局长,博野县委常委、…

6月起这些新规影响你我生活 多项政策助力民生与发展

6月起这些新规影响你我生活 多项政策助力民生与发展!《中华人民共和国学前教育法》自2025年6月1日起施行。该法强调发展学前教育需坚持政府主导,以政府举办为主,大力发展普惠性学前教育。国家将建立学前教育资助制度,有条件的地方逐步推进实施免费学前教育。幼儿园要科学实…

广东海南疑似火流星划过 夜空巨响引关注

广东海南疑似火流星划过 夜空巨响引关注!5月28日晚,广东网友发布视频称,“突然一声巨响,天都被照亮了。”随后,茂名巨响和火流星的话题在网络上引发关注。据中国气象爱好者消息,一颗火流星划破粤西的夜空。有评论区网友表示,这次火流星规模较大,不仅广东西部,海南北部…

day13 leetcode-hot100-24(链表3)

234. 回文链表 - 力扣&#xff08;LeetCode&#xff09; 1.转化法 思路 将链表转化为列表进行比较 复习到的知识 arraylist的长度函数&#xff1a;list.size() 具体代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode ne…

vue+threeJs 生成云状特效屏幕

嗨&#xff0c;我是小路。今天主要和大家分享的主题是“vuethreeJs 生成云状特效屏幕”。 动态云状特效示例图 二、实例代码 <!--创建一个动态数字屏幕--> <template><div class"pageBox"><div class"leftBox" ref"lef…

【穷举】数字方格

题目描述 如上图&#xff0c;有3个方格&#xff0c;每个方格里面都有一个整数a1&#xff0c;a2&#xff0c;a3。&#xff08;0 < a1, a2, a3 < n&#xff09; 而且a1 a2是2的倍数&#xff0c;a2 a3是3的倍数&#xff0c; a1 a2 a3是5的倍数。 你的任务是找到一组a1…

四大行浙江分行原行长相继落马 反腐风暴新高潮

5月27日下午,浙江钱塘江金融研修院官网“现任领导”一栏突然出现空白,原院长沈荣勤的信息消失。随后多家媒体报道称,工商银行浙江省分行原行长沈荣勤已被带走调查。这标志着继中行郭心刚、建行高强、农行冯建龙之后,第四位“四大行”浙江分行原一把手落马,这场席卷全省金融…