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 楼答案
使用矩阵行列式计算方法。看看这个example。2x2矩阵的行列式计算如下:
a b
c-d
将示例中的2x2矩阵计算替换为
记录所有这些值,并从中找出最大值