#include <iostream>
#include <cstring>
using namespace std;
void dp();
int r;
int c;
int a[110][110];
int max_sum;
int d[110][110];
int main()
{
int T;
cin >> T;
while(T--)
{
cin >> r >> c;
for(int i = 1; i <= r; i++)
for(int j = 1; j <= c; j++)
cin >> a[i][j];
max_sum = -1 << 30;
memset(d, 0, sizeof(d));
dp();
cout << max_sum << '\n';
}
}
void dp()
{
for(int i = 1; i <= r; i++)
for(int j = 1; j <= c; j++)
d[i][j] = d[i-1][j] + a[i][j];
for(int i = 1; i <= r; i++)
for(int j = i; j <= r; j++)
{
int sum = 0;
int max_cur = -1 << 30;
int flag = 0;
int t = -1 << 30;
for(int k = 1; k <= c; k++)
{
if(d[j][k] - d[i-1][k] >= 0)
flag = 1;
else
t = t > d[j][k] - d[i-1][k] ? t : d[j][k] - d[i-1][k];
sum += d[j][k] - d[i-1][k];
if(sum > 0)
{
max_cur = max_cur > sum ? max_cur : sum;
}
else
sum = 0;
}
if(flag == 0)
max_cur = t;
max_sum = max_cur > max_sum ? max_cur : max_sum;
}
}
南阳理工OJ_题目104 最大和
最新推荐文章于 2018-04-17 13:40:56 发布