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)