有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java找到最大的子矩阵

1我有一个2D数组,代表一个矩阵。我需要找到一个求和最大的方子矩阵。子矩阵的大小是行数或列数除以2。例如,如果我有这个

9 3 5 9
2 5 9 8
8 4 9 7
9 5 3 9

最大的子矩阵将是

9 8
9 7

因为它的总和最大


2其次,我需要找到具有置换的最大子矩阵。我的意思是,我需要选择子矩阵形状的最大数(同一列或同一行中至少有两个数)。例如,对角线边上的四个9

9 9
9 9

但我不能拿第一行做一个矩阵,因为它有矩阵的形状

我还在挣扎,所以请帮助我

这是我的代码,subm是子矩阵的大小

for (i=0;i<rows-subm;i++){
          for(j=0;j<colums-subm;j++)
          {
             temp=pic[i][j]+pic[i][j+1]+pic[i+1][j]+pic[i+1][j+1];
             if(temp > summax)
                 summax=temp;
          }
 }

共 (1) 个答案

  1. # 1 楼答案

    使用矩阵行列式计算方法。看看这个example。2x2矩阵的行列式计算如下:

    a b

    c-d

    ad-cb
    
    Instead use a+b+c+d
    

    将示例中的2x2矩阵计算替换为

    result = mat[0][0] + mat[1][1] + mat[0][1] + mat[1][0]; 
    

    记录所有这些值,并从中找出最大值