最大连续子矩阵和算法
Posted zxpnotebook
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大连续子矩阵和算法相关的知识,希望对你有一定的参考价值。
最大连续子矩阵算法
暴力求解不可取
或许可以从 O(n)复杂度内求解最大连续子数组的算法 得到灵感
O(n2)复杂度求最大连续子矩阵和算法:
- 创建一个新矩阵sum,sum[i][j]存放sun[i][0-j]的和
- 每个候选矩阵由左上角matrix[i][j]和右下角的元素matrix[p][q]确定,这个候选矩阵的和为res += (sum[i-p][q] - sum[i-p][i-1])
- 遍历矩阵,得到最大子矩阵和
代码
def getMaxSub(matrix):
sum = []
for line in matrix:
rowSum = []
s = 0
for i in line:
s += i
rowSum.append(s)
sum.append(rowSum)
m = len(matrix)
n = len(matrix[0])
max = matrix[0][0]
i = 0
j = 0
while(i<m):
while(j<n):
p = i
while(p<m):
q = j
while(q<n):
res = 0
for row in range(i,p+1):
if(i==0):
res += sum[row][q]
else:
res += (sum[row][q] - sum[row][i-1])
if(res<0): break
max = res if max<res else max
q += 1
p += 1
j += 1
i += 1
print(max)
以上是关于最大连续子矩阵和算法的主要内容,如果未能解决你的问题,请参考以下文章
华为OD机试 -最大子矩阵和(Python) | 机试题+算法思路+考点+代码解析 2023
[POJ1050]To the Max (矩阵,最大连续子序列和)