#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <algorithm>
#include <cmath>
#define N 160
using namespace std;
int n;
int ma[N][N];
void print2(int ma[][N],int n)
{
for(int i=1; i<=n; i++)
{
printf("%d",ma[i][0]);
for(int j=1; j<=n; ++j)
printf(" %2d",ma[i][j]);
printf("\n");
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("ex.in","r",stdin);
#endif
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
int maxv=-127;
int nn=2*n;
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j)
{
scanf("%d",&ma[i][j]);
}
for(int i=n+1; i<=nn; i++)
for(int j=1; j<=n; j++)
{
ma[i][j]=ma[i-n][j];
}
for(int i=1; i<=nn; i++)
for(int j=1; j<=n; j++)
{
ma[i][j]+=ma[i-1][j];
ma[i][j+n]=ma[i][j];
}
// print2(ma,nn);
// return 0;
int sum=0;
for(int i=1; i<=n; i++)
{
for(int j=i; j<n+i; j++)
{
for(int k=1; k<=n; k++)//列的开始位置!
{
sum=0;
for(int m=k; m<k+n; m++)
{
if(sum>=0)
{
sum+=ma[j][m]-ma[i-1][m];
}
else
{
break;
}
if(sum>maxv)
{
maxv=sum;
}
}
}
}
}
printf("%d\n",maxv);
}
return 0;
}
10827 Maximum sum on a torus
最新推荐文章于 2020-04-06 00:53:58 发布