当前位置: 首页 > wzjs >正文

学做烘焙的网站东莞房价2022最新楼盘消息

学做烘焙的网站,东莞房价2022最新楼盘消息,网站推广交换链接,海南一家天涯社区2025 B卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

在这里插入图片描述

2025 B卷 200分 题型

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

华为OD机试真题《矩阵中非1的数量 》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C++

C

GO


题目名称:矩阵中非1的数量


  1. 知识点:广度优先搜索(BFS)、矩阵遍历
  2. 时间限制:1秒
  3. 空间限制:256MB
  4. 限定语言:不限

题目描述

存在一个m*n的二维数组,其成员取值范围为0、1、2。其中:

  1. 值为1的元素具备同化特性,每经过1秒,会将其上下左右相邻的值为0的元素同化为1;
  2. 值为2的元素免疫同化,不会被改变;
  3. 初始时,矩阵所有成员随机初始化为0或2,且需将矩阵的[0,0]位置强制修改为1;
  4. 经过足够长时间后,求矩阵中剩余的非1元素(即0和2)的总数量。

输入描述
前两个数字为矩阵大小m和n,后续为矩阵内容,每行数据用空格分隔。
示例输入:

4 4  
0 0 0 0  
0 2 2 2  
0 2 0 0  
0 2 0 0  

输出描述
返回非1的元素个数。
示例输出:

9  

(解释:最终同化结果为左上角扩散的1和免疫的2,剩余0和2共9个)


Java

问题分析

我们需要找到一个矩阵中经过足够时间后,未被同化为1的元素数量。初始时,矩阵的[0,0]位置被强制设置为1,而1会扩散到相邻的0,但2保持不变。非1元素包括无法被扩散到的0和所有的2。


解题思路

  1. 初始化矩阵:将[0,0]位置强制设为1。
  2. 广度优先搜索(BFS):从初始的1开始,逐层感染相邻的0。
  3. 统计结果:遍历矩阵,统计所有未被感染的0和所有2的总数。

代码实现

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int m = scanner.nextInt(); // 读取行数int n = scanner.nextInt(); // 读取列数int[][] matrix = new int[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {matrix[i][j] = scanner.nextInt(); // 填充矩阵}}matrix[0][0] = 1; // 强制将[0,0]设为1// 初始化队列,并将起始点[0,0]加入队列Queue<int[]> queue = new LinkedList<>();queue.add(new int[]{0, 0});// 四个方向的偏移量:上、下、左、右int[][] dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};// BFS处理所有可扩散的0while (!queue.isEmpty()) {int[] cell = queue.poll(); // 取出当前节点int x = cell[0], y = cell[1];for (int[] dir : dirs) {int nx = x + dir[0], ny = y + dir[1];// 检查新坐标是否合法,且是否为可感染的0if (nx >= 0 && nx < m && ny >= 0 && ny < n && matrix[nx][ny] == 0) {matrix[nx][ny] = 1; // 标记为已感染queue.add(new int[]{nx, ny}); // 加入队列以便继续扩散}}}// 统计未被感染的0和所有2的总数int count = 0;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (matrix[i][j] != 1) { // 未被感染的0或2count++;}}}System.out.println(count);}
}

代码解析

  1. 读取输入

    int m = scanner.nextInt();
    int n = scanner.nextInt();
    int[][] matrix = new int[m][n];
    
    • 读取矩阵的行列数,并初始化二维数组。
  2. 强制初始化

    matrix[0][0] = 1;
    
    • 根据题目要求,无论输入如何,[0,0]必须为1。
  3. BFS初始化

    Queue<int[]> queue = new LinkedList<>();
    queue.add(new int[]{0, 0});
    
    • 将起始点[0,0]加入队列,作为扩散的起点。
  4. 方向偏移量

    int[][] dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
    
    • 定义四个方向的坐标偏移,用于遍历相邻位置。
  5. BFS扩散过程

    while (!queue.isEmpty()) {int[] cell = queue.poll();for (int[] dir : dirs) {int nx = x + dir[0], ny = y + dir[1];if (nx >= 0 && nx < m && ny >= 0 && ny < n && matrix[nx][ny] == 0) {matrix[nx][ny] = 1;queue.add(new int[]{nx, ny});}}
    }
    
    • 遍历队列中每个节点,检查其四个相邻位置是否可被感染(值为0)。
    • 若可感染,将其标记为1,并加入队列继续扩散。
  6. 统计未被感染元素

    int count = 0;
    for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (matrix[i][j] != 1) {count++;}}
    }
    
    • 最终遍历矩阵,统计所有非1元素(未被感染的0和所有2)。

示例测试

示例1输入:
4 4  
0 0 0 0  
0 2 2 2  
0 2 0 0  
0 2 0 0  

输出:

9  

解析:左上角的1扩散感染周围0,但被2阻挡,未感染的0和所有2的总数为9。

示例2输入:
3 3  
0 2 0  
2 2 0  
0 0 0  

输出:

8  

解析:初始的1无法扩散到其他0,总共有8个非1元素。

示例3输入:
2 2  
2 0  
0 2  

输出:

1  

解析:只有右下角的2未被感染。


综合分析

  1. 时间复杂度O(m*n)

    • BFS遍历每个节点最多一次,时间复杂度为矩阵元素数量。
  2. 空间复杂度O(m*n)

    • 存储矩阵和队列的空间。
  3. 正确性保证

    • BFS确保所有可达的0都被感染,剩余的非1元素严格符合题目要求。
  4. 优势

    • 高效处理大规模矩阵,避免重复计算。
    • 逻辑清晰,易于理解和维护。
  5. 适用场景

    • 需要快速计算病毒扩散、网络传播等类似模型的场景。

python

问题分析

我们需要计算矩阵中经过足够时间后未被感染的0和所有2的总数。初始时,矩阵的左上角[0,0]被强制设为1,1会扩散到相邻的0,而2保持不变。通过广度优先搜索(BFS)模拟扩散过程,最终统计剩余的非1元素。


解题思路

  1. 输入处理:读取矩阵的行列和元素,并将[0,0]强制设为1。
  2. BFS初始化:将初始点[0,0]加入队列。
  3. 扩散模拟:逐层扩散,将可达的0标记为1。
  4. 结果统计:遍历矩阵,统计所有非1元素的数量。

代码实现

import sys

文章转载自:

http://u7GOCZRt.rgkcf.cn
http://BMhFXIoI.rgkcf.cn
http://QpY13sxx.rgkcf.cn
http://x1T3pNHl.rgkcf.cn
http://Fq1IYFLT.rgkcf.cn
http://e37lBE0C.rgkcf.cn
http://A0jz2rNr.rgkcf.cn
http://UJMBjqpA.rgkcf.cn
http://1PFuZxRx.rgkcf.cn
http://xQlO40jT.rgkcf.cn
http://FKDj5O2h.rgkcf.cn
http://lDxPnrZA.rgkcf.cn
http://Ee5Z1nki.rgkcf.cn
http://IDcCy5xY.rgkcf.cn
http://qRPQtBD7.rgkcf.cn
http://MDsvupPI.rgkcf.cn
http://WryN9TxG.rgkcf.cn
http://he7lT74B.rgkcf.cn
http://VgLnERa3.rgkcf.cn
http://dvQNdRCZ.rgkcf.cn
http://QhOgDaxQ.rgkcf.cn
http://BHsn8BiD.rgkcf.cn
http://3B9icjYD.rgkcf.cn
http://111m2FvO.rgkcf.cn
http://4rxKpX2b.rgkcf.cn
http://jrZNpgvy.rgkcf.cn
http://zlfOhCcd.rgkcf.cn
http://C3r2G71X.rgkcf.cn
http://LPIQn3lh.rgkcf.cn
http://XtPnalT2.rgkcf.cn
http://www.dtcms.com/wzjs/759855.html

相关文章:

  • 可以在哪些网站 app做推广的做编程的+网站
  • 监控设备东莞网站建设音乐网站开发答辩ppt
  • 大连工程建设信息网站有wordpress
  • 做婚庆网站图片下载网站建设多少
  • iis网站服务器安全隐患百度手机app
  • 做基础网站主机要怎么优化网站排名才能起来
  • 中山移动网站建设多少钱建设电影网站的关键
  • 一个空间可以做几个网站吗赤城网站建设
  • 网站开发一般过程镜像别人网站做排名的好处
  • 二手交易网站建设的功能定位wordpress安装 用户名已存在哪里
  • 网站建设需求指引贵州省建设厅实名认证网站
  • 建网站需要那些工具温州网站
  • 西安知名的集团门户网站建设费用在哪请人做网站
  • 2019建一个什么网站最好直播软件视频软件
  • 相册模版网站图片展示滁州网站开发公司
  • 哪些是网站建设电子商务网站建设的要素
  • 不收费的企业查询网站wordpress 中文标签
  • 深圳哪里有网站建设自己做网站传视屏
  • 佛山市网站建设分站企业网站制作 火星科技
  • 做网站的空间和服务器吗iis .htaccess wordpress
  • 仿京东网站模板wordpress首页制作幻灯片
  • 做悬赏的网站1网站免费建站
  • 江门建站公司wordpress新窗口
  • 门户网站开发框架wordpress 菜单相册
  • 玻璃制品东莞网站建设网站开发零基础培训学校
  • 电子商务网站建设选修课威海百姓网免费发布信息网
  • 门户网站的建设与维护北京网站开发服务商
  • 黄石网站建设深圳龙华建设工程交易中心网站
  • 做网站前台需要学什么 后台wordpress如何自建站
  • 深圳做网站(信科网络)邢台中高风险地区