#define MAX_N 150
int table[MAX_N + 1][MAX_N + 1];
#define dif(i,j,h) (table[i + h][j] - table[i][j])
int main() {
int n,i,j,k,t,max;
scanf("%d",&n);
for(j=0;j<n;j++)
table[0][j]=0;
for(i=1;i<=n;i++)
for(j=0;j<n;j++)
scanf("%d",&table[i][j]);
for(j=0;j<n;j++)
for(i=1;i<=n;i++)
table[i][j]=table[i- 1][j]+table[i][j];
max=table[1][0];
for(k=1;k<=n;k++)
for (i=0;i<=n-k;i++)
for (t=0,j=0;j<n;j++) {
if (t>=0) t+=dif(i,j,k);
else t=dif(i,j,k);
if (t>max) max=t;
}
printf("%d\n",max);
return 0;
}
/*
Input:
4
0 -2 -7 0 9 2 -6 2
-4 1 -4 1 -1
8 0 -2
Outcode:
15
*/
######################################################################
#include<stdio.h>
#define SZ 105
long arr[SZ][SZ];
int main()
{
long n,max,sum,i,j,k;
while(scanf("%ld",&n)==1)
{
for(i=1;i<=n;i++)
{
arr[i][0]=0;
for(j=1;j<=n;j++)
{
scanf("%ld",&arr[i][j]);
arr[i][j]+=arr[i][j-1];
}
}
max=0;
for(k=1;k<=n;k++)
{
for(i=k;i<=n;i++)
{
sum=0;
for(j=1;j<=n;j++)
{
sum+=arr[j][i]-arr[j][k-1];
if(sum<0 && sum<max)
sum=0;
else if(max<sum)
max=sum;
}
}
}
printf("%ld\n",max);
}
return 0;
}
/*
Input:
4
0 -2 -7 0 9 2 -6 2
-4 1 -4 1 -1
8 0 -2
Output:
15
*/
No comments:
Post a Comment