3,881
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <cstdio>
using namespace std;
int num[105][105]={0};
int main()
{
int n,t,ans,r,i,j,k;
while(scanf("%d",&n)){
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
scanf("%d",&t);
num[i][j]=num[i-1][j]+t;
}
ans=num[1][1];
for(i=0;i<n;i++){
for(j=i+1;j<=n;j++){
r=num[j][1]-num[i][1];
for(k=2;k<=n;k++){
if(r<0) r=num[j][k]-num[i][k];
else r+=num[j][k]-num[i][k];
if(ans<r) ans=r;
}
}
}
printf("%d\n",ans);
}
return 0;
}
#include<iostream>
const int MAX=101;
int matrix[MAX][MAX];
int DP[MAX][MAX];
using namespace std;
int main()
{
int n,i,j,Max,maxn,sum;
while(cin>>n)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cin>>matrix[i][j];
}
}
memset(DP,0,sizeof(DP));
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
DP[j][i]=DP[j][i-1]+matrix[i][j];
}
}
Max=0;
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j++)
{
maxn=0;
sum=0;
for(int k=1;k<=n;k++)
{
sum+=DP[k][j]-DP[k][i-1];
if(sum>0)
{
if(sum>maxn)
maxn=sum;
}
else
sum=0;
}
if(maxn>Max)
Max=maxn;
}
}
cout<<Max<<endl;
}
return 0;
}