华为OD机试之矩阵最大值(Java源码)

这篇具有很好参考价值的文章主要介绍了华为OD机试之矩阵最大值(Java源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

矩阵最大值

题目描述

给定一个仅包含0和1的N*N二维矩阵,请计算二维矩阵的最大值,计算规则如下:
1.每行元素按下标顺序组成一个二进制数(下标越大越排在低位),二进制数的值就是该行的值。矩阵各行值之和为矩阵的值。
2.允许通过向左或向右整体循环移动每行元素来改变各元素在行中的位置。
比如:
[1,0,1,1,1]向右整体循环移动2位变为[1,1,1,0,1],二进制数为11101,值为29。
[1,0,1,1,1]向左整体循环移动2位变为[1,1,1,1,0],二进制数为11110,值为30。

输入描述

1、输入的第一行为正整数,记录了N的大小,0 < N <= 20。
2、输入的第2到N+1行为二维矩阵信息,行内元素边角逗号分隔。

输出描述

矩阵的最大值

输入 输出 说明
5
1,0,0,0,1
0,0,0,1,1
0,1,0,1,0
1,0,0,1,1
1,0,1,0,1
122 第一行向右整体循环移动1位,得到本行的最大值[1,1,0,0,0],二进制值为11000,十进制值为24。
第二行向右整体循环移动2位,得到本行的最大值[1,1,0,0,0],二进制值为11000,十进制值为24。
第三行向左整体循环移动1位,得到本行的最大值[1,0,1,0,0],二进制值为10100,十进制值为20。
第四行向右整体循环移动2位,得到本行的最大值[1,1,1,0,0],二进制值为11100,十进制值为28。
第五行向右整体循环移动1位,得到本行的最大值[1,1,0,1,0],二进制值为11010,十进制值为26。
因此,矩阵的最大值为122。

源码和解析
解析:

对每行的数据进行n次右移,就可以得到最大的可能。求出每行的最大值即可

示例代码:文章来源地址https://www.toymoban.com/news/detail-664838.html

public class T8 {
	public static void main(String[] args) {
		int number = 5;
		int[][] numArr = { { 1, 0, 0, 0, 1 }, { 0, 0, 0, 1, 1 },
				{ 0, 1, 0, 1, 0 }, { 1, 0, 0, 1, 1 }, { 1, 0, 1, 0, 1 } };
		// number = 3;
		// int[][] numArr ={{1,0,1},{0,1,0},{0,0,1}};
		int sum = 0;// 最后的和
		for (int[] arr : numArr) {
			int[] tmpArr = arr;
			int max = 0;
			for (int i = 0; i < arr.length; i++) {
				tmpArr = toRight(tmpArr, number);
				String binStr = "";
				for (int j = 0; j < tmpArr.length; j++) {
					// System.out.print(tmpArr[j] + ",");
					binStr += tmpArr[j];
				}
				int num = Integer.parseUnsignedInt(binStr, 2);
				if (max < num) {
					max = num;
				}
				System.out.println("单行最值:" + max);
			}
			sum += max;// 每行的最大值相加
			System.out.println("_________");
		}
		System.out.println("矩阵的最大值为:" + sum);
	}

	public static int[] toRight(int[] arr, int n) {
		// 右移一位
		int tempArr[] = arr.clone();
		for (int i = 1; i < arr.length - 1; i++) {
			tempArr[i] = arr[i - 1];
		}
		tempArr[0] = arr[arr.length - 1];
		tempArr[arr.length - 1] = arr[arr.length - 2];
		return tempArr;
	}
}

到了这里,关于华为OD机试之矩阵最大值(Java源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 华为od 机试真题 Python 实现【矩阵最大值】

    给定一个仅包含0和1的N*N二维矩阵,请计算二维矩阵的最大值,计算规则如下: 1、 每行元素按下标顺序组成一个二进制数(下标越大越排在低位),二进制数的值就是该行的值。矩阵各行值之和为矩阵的值。 2、允许通过向左或向右整体循环移动每行元素来改变各元素在行中

    2024年02月08日
    浏览(33)
  • 【独家】华为OD机试 - 矩阵最值,计算二位矩阵的最大值(C 语言解题)

    最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南 华为od机试,独家整理 已参加机试人员的实战技巧 给定一个仅包含 0 和 1 的 n*n 二维矩阵

    2023年04月25日
    浏览(45)
  • 【华为OD机试真题 C++ Java Python】1、滑动窗口最大值 | 机试真题+思路参考+代码解析

    🍂个人博客首页: KJ.JK   🍂专栏介绍: 定期更新华为OD各个时间阶段的机试真题,每日定时更新,本专栏每篇的文章都会将使用C++、Python、Java三种语言进行更新解答,每个题目的思路分析都非常详细,超过百字欢迎大家订阅学习,代码可以直接运行使用 🎃题目描述 有一个

    2024年02月08日
    浏览(33)
  • 【华为OD统一考试B卷 | 100分】矩阵最大值(C++ Java JavaScript Python)

    在线OJ 已购买本专栏用户,请私信博主开通账号,在线刷题!!! 运行出现 Runtime Error 0Aborted,请忽略 华为OD统一考试A卷+B卷 新题库说明 2023年5月份,华为官方已经将的 2022/0223Q(1/2/3/4)统一修改为OD统一考试(A卷)和OD统一考试(B卷)。 你收到的链接上面会标注A卷还是B卷。

    2024年02月08日
    浏览(76)
  • 2022 华为机试真题 C 实现【矩阵最大值】

            所有题目均有五种语言实现。C实现目录、 C++ 实现目录 、 Python实现目录 、 Java实现目录 、 JavaScript实现目录 给定一个仅包含0和1的N*N二维矩阵,请计算二维矩阵的最大值,计算规则如下: 1、 每行元素按下标顺序组成一个二进制数(下标越大越排在低位),二进

    2024年02月07日
    浏览(30)
  • 华为OD-滑动窗口最大值

    给你一个整数数组  nums ,有一个大小为  k   的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的  k  个数字。滑动窗口每次只向右移动一位。 返回  滑动窗口中的最大值  。 示例二 代码实现

    2024年02月11日
    浏览(29)
  • 【华为OD机试真题 Java语言】305、最大矩阵和、最大子矩阵 | 机试真题+思路参考+代码分析

    🍂个人博客首页: KJ.JK   🍂专栏介绍: 华为OD机试真题汇总,定期更新华为OD各个时间阶段的机试真题,每日定时更新,本专栏将使用Java语言进行更新解答,包含真题,思路分析,代码参考,欢迎大家订阅学习 🎃题目描述 给定一个二维整数矩阵,要在这个矩阵中选出一个

    2024年02月07日
    浏览(32)
  • 华为OD机试之用户调度问题(Java源码)

    题目描述 在通信系统中,一个常见的问题是对用户进行不同策略的调度,会得到不同的系统消耗和性能。 假设当前有n个待串行调度用户,每个用户可以使用A/B/C三种不同的调度策略,不同的策略会消耗不同的系统资源。请你根据如下规则进行用户调度,并返回总的消耗资源

    2024年02月08日
    浏览(32)
  • 华为OD机试之最长连续子序列(Java源码)

    题目描述 有N个正整数组成的一个序列。给定整数sum,求长度最长的连续子序列,使他们的和等于sum,返回此子序列的长度, 如果没有满足要求的序列,返回-1。 输入描述 第一行输入是:N个正整数组成的一个序列 第二行输入是:给定整数sum 输出描述 最长的连续子序列的长

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包