正文

求和最大的子矩阵2007-09-06 10:40:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lingdlz/29159.html

分享到:

Maximal Sub-rectangle Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB Problem description Given a 2-dimensional array of positive and negative integers, find the sub-rectangle with the largest sum. The sum of a rectangle is the sum of all the elements in that rectangle. In this problem the sub-rectangle with the largest sum is referred to as the maximal sub-rectangle. A sub-rectangle is any contiguous sub-array of size 1 × 1 or greater located within the whole array. 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 -2is in the lower-left-hand corner:9 2 -4 1 -1 8and has the sum of 15. Input The input consists of an array of N × N integers. The input begins with a single positive integer N on a line by itself indicating the size of the square two dimensional array. This is followed by N2 integers separated by white-space (newlines and spaces). These N2 integers make up the array in row-major order (i.e., all numbers on the first row, left-to-right, then all numbers on the second row, left-to-right, etc.). N may be as large as 100. The numbers in the array will be in the range [-127, 127]. Output The output is the sum of the maximal sub-rectangle. Sample Input 4 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 Sample Output 15 /// 初学者,练习用 #include <iostream>using namespace std; int main(){    int a[102][102]={0},n,i,j,t,k,sum;    cin>>n;    for(i=1; i<=n; i++)        for(j=1; j<=n; j++){            cin>>t;            a[i][j]=a[i][j-1]+t;        }    for(sum=0,i=1; i<=n; i++)        for(j=1; j<=n; j++)            for(t=0,k=j; k<=n; k++){                t += a[k][i];                if(t > sum)                    sum = t;            }    cout<<sum<<endl;    return 0; }

阅读(4678) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册