一、题目描述
给定一个仅包含0和1的N*N的二维矩阵,请计算二维矩阵的最大值。
计算规则如下:
1、每行元素按下标顺序组成一个二进制数(下标越大越排在低位),二进制数的值就是该行的值。矩阵各行值之和为矩阵的值。
2、允许通过向左或向右整体循环移动每行元素来改变各元素在行中的位置。
比如:
[0,1,0,0,1]向右整体循环移动1位变为[1,0,1,0,0],二进制数为10100,值为20。
[1,1,0,1,1]向右整体循环移动2位变为[1,1,1,1,0],二进制数为11110,值为30。
二、输入描述
1、第一行输入一个正整数,记录N的大小。
2、接下来的N行输入二维矩阵信息,行内元素逗号隔开。
三、输出描述
矩阵的最大值。
四、测试用例
1、输入
3
1,0,1
0,1,0
1,1,0
2、输出
16
3、说明
第一行 “101” 的所有右移结果: “101”(5), “011”(3), “110”(6) → 最大6
第二行 “010” 的右移: “010”(2), “100”(4), “001”(1) → 最大4
第三行 “110” 的右移: “110”(6), “101
本文介绍了一道华为在线测评(OD)的编程题,要求计算一个仅包含0和1的二维矩阵的最大值。解题关键在于通过向左或右循环移动每行元素,找到最大二进制数值并转换为十进制。文章详细阐述了问题描述、输入输出格式、解题思路,并提供了Java代码实现及效果展示,最终得出矩阵的最大值为136。
订阅专栏 解锁全文
270

被折叠的 条评论
为什么被折叠?



