python 求矩陣的最大子矩陣


給定一個n*m的矩陣A,求A中的一個非空子矩陣,使這個子矩陣的元素和最大。其中,A的子矩陣指在A中行和列均連續的一部分。

輸入格式

輸入的第一行包含兩個整數n,m(1<=n,m<=50),分別表示矩陣A的行數和列數。接下來n行,每行m個整數,表示矩陣Aij(-1000<=Aij<=1000)。

輸出格式

輸入一行,包含一個整數,表示A中最大的矩陣元素和。

樣例輸入

3 3
2 -4 1
-1 2 1
4 -2 2

樣例輸出

6

暴力枚舉法

m,n=input().split()
m=int(m)#行數
n=int(n)#列數
dp=[[0 for i in range(n)]for i in range(m)]
line=[]
for i in range(m):
    line=input().split()
    line=list(map(int,line))
    for j in range(n):
        dp[i][j]=line[j]
max=-99999999999999
sum=0
# right為右邊界 left為左邊界 up為上邊界 down為下邊界
for left in range(n):
    for right in range(left,n):
        for up in range(m):
            for down in range(up,m):
                sum=0
                for i in range(left,right+1):
                    for j in range(up,down+1):
                        sum=sum+dp[j][i]
                if sum>max:
                    max=sum
print(max)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM