NYOJ 最大和

时间:2024-08-14 21:06:14
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int mp[][];
int main()
{
int t;
cin>>t;
while(t--)
{
int r,c;
cin>>r>>c;
for(int i=;i<=r;i++)
{
for(int j=;j<=c;j++)
{
if(j==) mp[i][j] = ;
else
{
cin>>mp[i][j];
if(j!=)
{
mp[i][j] = mp[i][j] + mp[i][j-];
}
}
}
}
int temp,sum;
int max = -;
for(int i=;i<=c;i++)
{
for(int j=i;j<=c;j++) //(i,j)区间 表示矩阵的宽度 ,可以理解把(i,j)的和 换元成一个数
{
temp = ;
sum = ;
for(int k=;k<=r;k++) //
{
sum = sum + mp[k][j] - mp[k][i-]; //mp[k][0] = 0;
if(sum > max)
{
max = sum;
}
if(sum < )
{
sum = ;
}
}
}
}
cout<<max<<endl;
}
return ;
}