[关闭]
@yexiaoqi 2022-05-12T02:51:38.000000Z 字数 718 阅读 369

计算矩阵的最大值

刷题 华为机试


题目:给定一个仅包含0和1的N*N二维矩阵,请计算二维矩阵的最大值,计算规则如下:
每行元素按下标顺序组成一个二进制数(下标越大越排在低位),二进制数的值就是该行的值。矩阵各行值之和为矩阵的值。
允许通过向左或向右整体循环移动每行元素来改变各元素在行中的位置。 比如:
[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。
输入描述:
输入的第一行为正整数,记录了N的大小,0 < N <= 20。
输入的第2到N+1行为二维矩阵信息,行内元素半角逗号分隔。
输出描述:
矩阵的最大值
链接https://www.nowcoder.com/discuss/942618

  1. import java.util.*;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Scanner sc = new Scanner(System.in);
  5. while(sc.hasNext()) {
  6. int n = sc.nextInt();
  7. int allMax = 0;
  8. for(int i=1; i<=n; i++) {
  9. int max = 0;
  10. String b = sc.next().replaceAll(",", "");
  11. for (int j=0; j<n; j++){
  12. b = b.charAt(n-1) + b.substring(0, n-1);
  13. max = Math.max(max, Integer.parseInt(b, 2));
  14. }
  15. allMax += max;
  16. }
  17. System.out.println(allMax);
  18. }
  19. }
  20. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注