动态规划
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int INF=310;
int num[INF][INF];
int sum_max(int n,int temp[])
{
int sum(0),Max(-0xfffff);
for(int i=0;i<n;i++)
{
if(sum>0) sum+=temp[i];
else sum=temp[i];
if(sum>Max)
Max=sum;
}
return Max;
}
int Matric_Sum(int n,int m)
{
int dp[INF];
int Max(0);
for(int i=0;i<n;i++)
{
memset(dp,0,sizeof(dp));
for(int j=i;j<n;j++)
{
for(int k=0;k<m;k++)
dp[k]+=num[j][k];
int sum=sum_max(m,dp);
if(Max<sum) Max=sum;
}
}
return Max;
}
int main()
{
int ncase;
cin>>ncase;
while(ncase--)
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",&num[i][j]);
int sum=Matric_Sum(n,m);
printf("%d\n",sum);
}
return 0;
}