首页 > 其他分享 >华为OD E卷(100分)56-矩阵扩散

华为OD E卷(100分)56-矩阵扩散

时间:2025-01-14 15:29:50浏览次数:3  
标签:OD int res 56 nextInt OFFSET sc 100 data

 前言

        工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。

题目描述

       存在一个m*n的二维数组,其成员取值范围为0或1。其中值为1的成员具备扩散性,每经过1S,将上下左右值为0的成员同化为1。
        二维数组的成员初始值都为0,将第[i,j]和[k,l]两个位置上元素修改成1后,求矩阵的所有元素变为1需要多长时间。

输入描述

        前两个数是矩阵m*n,中间两个数是第一个点的坐标,最后两个数是第二个点的坐标。其中这两个点初始为1,其他点初始为0。

输出描述

        输出矩阵的所有元素变为1所需要秒数。

示例

示例1

输入

4 4 0 0 3 3

输出

3

题解

Java实现

package huawei.e100;

import java.util.Scanner;

/**
* @author arnold
* @date 2025年1月14日
* 矩阵扩散
*/
public class T56 {
	// 定义方向
	private static final int[][] OFFSET = {{0,1}, {0,-1}, {1,0}, {-1,0}};

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			int m = sc.nextInt();
			int n = sc.nextInt();
			int i = sc.nextInt();
			int j = sc.nextInt();
			int k = sc.nextInt();
			int l = sc.nextInt();
			int[][] data = new int[m][n];
			data[i][j] = 1;
			data[k][l] = 1;
			int res = run(data, m, n);
			System.out.println(res);
					
		}

	}
	
	static int run(int[][] data, int m, int n) {
		int res = 0;
		int count = m*n; // 格子数
		int c = 0;
		while(c < count-2) { //判断是否填充完成
			res++;
			boolean[][] isnew = new boolean[m][n]; // 记录是否为本轮新扩散的
			for (int i = 0; i < data.length; i++) {
				for (int j = 0; j < data[i].length; j++) {
					if(data[i][j] == 1 && isnew[i][j] == false) {
						for (int k = 0; k < OFFSET.length; k++) {
							if(i+ OFFSET[k][0] < 0 || i+ OFFSET[k][0] >= m || j + OFFSET[k][1] < 0 || j+ OFFSET[k][1] >= n) {
								continue;
							} else {
								if (data[i+OFFSET[k][0]][j+ OFFSET[k][1]] != 1) {
									data[i+OFFSET[k][0]][j+ OFFSET[k][1]] = 1;
									isnew[i+OFFSET[k][0]][j+ OFFSET[k][1]] = true;
									c++;
								}
							}
						}
					}
				}
			}
		}
		return res;
	}
}

标签:OD,int,res,56,nextInt,OFFSET,sc,100,data
From: https://blog.csdn.net/arnold66/article/details/145140433

相关文章

  • idea中,在pom文件引入jwt使用,JwtTes测试报错Cannot resolve method ‘withClaim(String
    JwtTes测试类中报错Cannotresolvemethod'withClaim(String,Map<String,Object>)'  1.报错报这个错误可能是jwt版本问题,下面请看我的报错文件JwtTest.javapom.xml找了好一会,以为是没加分号的原因,以为是用了中文标点,结果检查了一遍,代码没有问题,标点没有问题。......
  • 前端必知必会-Node.js 连接MySQL 插入数据
    文章目录Node.js连接MySQL插入数据插入表插入多条记录结果对象获取插入的ID总结Node.js连接MySQL插入数据插入表要填充MySQL中的表,请使用“INSERTINTO”语句。示例获取您自己的Node.js服务器在“customers”表中插入一条记录:varmysql=require('my......
  • 华为OD上机考试真题(Java)——排队游戏
    题目:新来的老师给班里的同学排一个队,每个学生有一个能力值。一些学生是刺头,不会听老师的话,自己选位置;非刺头同学在剩下的位置按照能力值从小到大排。对于非刺头同学,如果发现他前面有比自己高的同学,他不满程度就增加,增加的数量等于前面能力值比他大的同学的个数。刺头不......
  • KODENSHI(可天士)光电开关介绍
    可天士的光电开关产品在业内以种类丰富、产品齐全而著称。除了一般的透过型、反射型产品外,还可提供分离型的光电开关,它是由一个发光器件和一个光敏器件单独组装在外壳中构成的。我们可以满足客户的各种定制化需求,可提供带有PCB,带有线束以及带有特殊连接器的光电开关。  ......
  • 前端必知必会-Node.js连接MySQL 查询数据
    文章目录Node.js连接MySQL查询数据从表中查询数据选择列结果对象Fields对象总结Node.js连接MySQL查询数据从表中查询数据要从MySQL中的表中查询数据,请使用“SELECT”语句。示例获取您自己的Node.js服务器从“customers”表中查询所有记录,并显示结果对象:......
  • 用于决策的世界模型 -- 论文 World Models (2018) & PlaNet (2019) 讲解
    参考资料:[2411.14499]UnderstandingWorldorPredictingFuture?AComprehensiveSurveyofWorldModels[1803.10122]WorldModelsLearningLatentDynamicsforPlanningfromPixelsKaixhin/PlaNet:DeepPlanningNetwork:Controlfrompixelsbylatentplanning......
  • 重回C语言之老兵重装上阵(四)vscode配置C语言多文件编译运行
    眨眼睛第一次使用vscode写C语言多文件项目发现插件默认配置只能单文件编译,勃然大怒,于是怒了一下首先明确这一件事,只要有环境C文件就能通过命令行编译,插件只是简化输入命令行的工具,所以我们只需修改插件编译的配置即可一.首先我们需要下载对应插件点击跳转具体插件安装......
  • EpiCoder:基于特征树的代码生成框架——提升代码大语言模型的多样性与复杂性
    引言:代码生成领域的挑战与机遇近年来,大语言模型(LLMs)在代码理解和生成领域展现了巨大的潜力。通过对大规模代码数据进行预训练,这些模型能够生成功能强大的代码片段。然而,现有的代码生成方法主要依赖于代码片段作为种子数据,这些片段在功能性和结构上存在局限性,难以捕捉真实编......
  • MongoDB 会丢数据吗? 在次补刀MongoDB 双机热备,以及如何删除Journal log【转】
    开头还是介绍一下群,如果感兴趣PolarDB,MongoDB,MySQL,PostgreSQL,Redis,Oracle,Oceanbase等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加微信号liuaustin3(共1220人左右1+2+3+4)新人会进入3群 以后会争取每天一段感悟,不讨论对错,幼......
  • yarn安装node-sass解决方案
    node-sass和node版本不兼容的问题:node和node-sass的各个版本的对应关系,可以参考以下表格:NodeJS node-sassnode20 9.0+node19 8.0+node18 8.0+node17 7.0+,<8.0node16 6.0+node15 5.0+,<7.0node14 4.14+,<9.0node13 4.13+,<5.0node12 4.12.0+,<8.0node......