最大子矩阵问题 加强版
给定一个二维的数组(含正数或负数),请从中找出和最大的子矩阵。
输入
第一行:n,m
接下来n行m列,表示一个二维数组
输出
和为最大子矩阵的和
样例
样例输入
4 4 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2
样例输出
15
tips:

1 #include <bits/stdc++.h> 2 using namespace std; 3 long int m,n,o,temp = -10000000; 4 long long a[51][51],b[51][51]; 5 int main(){ 6 cin>>n>>m; 7 for(int i = 1;i<=n;i++) 8 for(int j = 1;j<=m;j++){ 9 cin>>a[i][j]; 10 b[i][j] = b[i-1][j] - b[i-1][j-1] + b[i][j-1] + a[i][j]; 11 } 12 for(int x1 = 1;x1<=n;x1++){ 13 for(int y1 = 1;y1<=m;y1++){ 14 for(int x2 = x1;x2<=n;x2++){ 15 for(int y2 = y1;y2<=m;y2++){ 16 o = b[x2][y2] - b[x1-1][y2] - b[x2][y1-1] + b[x1-1][y1-1]; 17 if(o>temp) temp = o; 18 } 19 } 20 } 21 } 22 cout<<temp; 23 return 0; 24 }