to the Max
--------------------------------------------------------------------------------
Time limit:1 Second Memory limit:32768 KB
--------------------------------------------------------------------------------
Problem
Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1 x 1 or greater located within the whole array. The sum of a rectangle is the sum of the "the elements in" that rectangle. The problem the sub-rectangle with the largest sum are referred to as the Maximal sub-rectangle.
As an example, the maximal sub-rectangle of the array:
0-2-7 0
9 2-6 2
-4 1-4 1
-1 8 0-2
is in the lower left corner:
7 |
-4 1
-1 8
and has a sum of 15.
The input consists of an n x n array of integers. The input begins with a single positive integer N in a line by itself, indicating the size of the square two-dimensional a Rray. This was followed by N 2 integers separated by whitespace (spaces and newlines). These is the N 2 integers of the array, presented in Row-major order. That's, all numbers on the first row, left-to-right, then all numbers-second row, left-to-right, etc. N may be as large as 100. The numbers in the array would be in the range [-127,127].
Output
Output the sum of the maximal sub-rectangle.
Example Input
4
0-2-7 0 9 2-6 2
-4 1-4 1-1
8 0-2
Output
15
1#include <stdio.h>2#include <string.h>3 #defineMAXN 1054 intMain ()5 {6 //freopen ("A.txt", "R", stdin);7 intI,j,k,n,t,sum,max;8 intA[MAXN][MAXN];9 while(SCANF ("%d", &n)! =EOF)Ten { OneMemset (A,0,sizeof(a)); A for(i=1; i<=n;++i) - { - for(j=1; j<=n;++j) the { -scanf"%d",&t); -a[i][j]=a[i-1][j]+T; - } + } -max=0; + for(i=1; i<=n;++i) A { at for(j=i;j<=n;++j) - { -sum=0; - for(k=1; k<=n;++k) - { -t=a[j][k]-a[i-1][k]; insum+=T; - if(sum<0) sum=0; to if(Sum>max) max=sum; + } - } the } *printf"%d\n", max); $ }Panax Notoginseng return 0; -}
AC
to the Max