java - 找到最大和子矩阵

标签 java

1. 我有一个二维数组,代表一个矩阵。我需要找到一个总和最大的子矩阵。子矩阵的大小是行数或列数除以 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;
          }
 }

最佳答案

使用矩阵行列式计算方法。看看这个example 。 2x2 矩阵的行列式将计算为

ab

c d

ad-cb

Instead use a+b+c+d

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

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

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

关于java - 找到最大和子矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12274647/

相关文章:

c# - 过滤一组包含其他短语的所有短语的算法

java - 使用 Wea​​kReference 进行本地引用是个好主意吗?

java - 打印 mm :ss. ms 秒表字符串的更好方法?

java - hibernate JPA : mappedBy reference exception

java - 如何在 Selenium Web 驱动程序中获取 userAgent 信息

java - SqlResultSetMapping 列和实体

java - "Dynamic"Java 中的转换

JavaFX 在网格 Pane 中显示多个图像

java - Tomcat Web 应用程序位置问题

java - 如何解决此 "required a bean"错误