給定一個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)