华为OD机试真题 Java 实现【开心消消乐】【2023 B卷 100分】

news/2025/3/19 23:04:35/

在这里插入图片描述

目录

    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、Java算法源码
    • 五、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

一、题目描述

给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。矩阵示例如:

1 1 0 0
0 0 0 1
0 0 1 1
1 1 1 1

现需要将矩阵中所有的1进行反转为0,规则如下:

  1. 当点击一个1时,该1变被反转为0,同时相邻的上、下、左、右,以及左上、左下、右上、右下8个方向的1(如果存在1)均会自动反转为0;
  2. 进一步地,一个位置上的1被反转为0时,与其相邻的8个方向的1(如果存在1)均会自动反转为0;
    按照上述规则示例中的矩阵只最少需要点击2次后,所有值均为0。请问,给定一个矩阵,最少需要点击几次后,所有数字均为0?

二、输入描述

第一行为两个整数,分别表示矩阵的行数N和列数M,取值范围均为[1, 100]。

接下来N行表示矩阵的初始值,每行均为M个数,取值范围[0,1]。

三、输出描述

输出一个整数,表示最少需要点击的次数。

四、Java算法源码

static int[][] nums;
static int n;//行
static int m;//列public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();nums = new int[n][m];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {nums[i][j] = sc.nextInt();}}int ans = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (nums[i][j] == 0) {continue;}ans += dfs(i, j);}}System.out.println(ans);
}public static int dfs(int x, int y) {nums[x][y] = 0;int[][] direction = new int[][]{{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {1, 1}};for (int i = 0; i < direction.length; i++) {int cx = x + direction[i][0];int cy = y + direction[i][1];if (0 <= cx && cx < n && 0 <= cy && cy < m && nums[cx][cy] == 1) {dfs(cx, cy);}}return 1;
}

五、效果展示

1、输入

4 4
1 1 0 0
0 0 0 1
0 0 1 1
1 1 1 1

2、输出

2

3、说明

在上述4 * 4的矩阵中,只需要点击2次,即可将所有的1进行消除。

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/682836.html

相关文章

柏林初创推出复古电动四轮车Duo Moke

点击 欧盟IT那些事 关注我们 公告&#xff1a;因企鹅审核规定&#xff0c;本公众号从《德国IT那些事》更名为《欧盟IT那些事》。 Duo Moke是柏林创业公司Urban Drivestyle推出的电动四轮车&#xff0c;外形复古。 Duo Moke在法律上是多车道自行车&#xff0c;因此既不需要上保险…

电动四轮车控制器代码,包含PCB文件,原理图

知名厂家电动四轮车控制器代码&#xff0c;包含PCB文件&#xff0c;pdf原理图&#xff0c;代码齐全&#xff0c;风格很好。 YID:51500601364412523

大功率四轮电动车控制器代码, 原理图和Pcb

大功率四轮电动车控制器代码&#xff0c; 原理图和Pcb&#xff0c;完整可用。 ID:891500634899791135微微就不笑哈

智能小车(四轮)制作

智能小车的制作是学习51单片机中一个很重要的过程&#xff0c;下面是自己完成小车的一点心得&#xff0c;在这里和大家分享。 代码如下&#xff1a; #include <reg51.h> //IO引脚定义: sbit key1 P3^7; //定义按键1 sbit key2 P3^6; //定义按键2 sbit key…

智能四驱小车

开源协议&#xff1a;CERN Open Hardware License 描述&#xff1a; 该项目初衷是在整理东西的时候看到了小时候玩的四驱车&#xff0c;虽然落满灰尘被遗落在纸箱当中&#xff0c;不经意间翻出来总有那么些感触。大家一起来一起回忆下童年的回忆吧&#xff0c;虽然看起来很旧&a…

低速电动车方案 电动四轮车 60V

低速电动车方案 电动四轮车 60V 编号:89688666262284803芳草街沉静的凉果

电动汽车四轮车原理图,Pcb 同步电机和交流异步电机控制器3526原版pcb,原理图,可用于维 修打样,DIY升级。也有代码。

电动汽车四轮车原理图&#xff0c;Pcb 同步电机和交流异步电机控制器3526原版pcb&#xff0c;原理图&#xff0c;可用于维 修打样&#xff0c;DIY升级。也有代码。 链接&#xff1a;https://pan.baidu.com/s/1zx_0vOtOXb_Hp8-2jk9c4A?pwdd1vj 提取码&#xff1a;d1vj

POI导出Excle工具类(反射读取Java类)

文章目录 简介操作Excel相关组件使用工具类 简介 POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API&#xff0c;Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 所以POI的主要功能是可以用Java操作Microsoft Office的相关文件&#xff0…