UVA - 108 Maximum Sum

来源:互联网 发布:360文件夹加密软件 编辑:程序博客网 时间:2024/04/28 15:09

题意:求最小的子矩阵和,是uva 507 的一个加深吧,从一维变成了二微,那么我们就转化为一维的,每一列的数,可以组成连续的子序列,然后将这个子序列当成一个元素,其它列同样如此,就可以转化为一维的了

#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 123;int a[MAXN][MAXN],b[MAXN],n,sum,Max;int main(){    scanf("%d",&n);    Max = -123456;    for (int i = 0; i < n; i++)        for (int j = 0; j < n; j++)            scanf("%d",&a[i][j]);        for (int i = 0; i < n; i++)    {        for (int j = 0; j < n; j++)  //存着这一列的和            b[j] = 0;        for (int j = i; j < n; j++)        {            sum = 0;            for (int l = 0; l < n; l++)            {                b[l] += a[j][l];                if (sum >= 0)                    sum += b[l];                else sum = b[l]; //找到了这次序列的最大值了                if (sum > Max)                    Max = sum;            }        }    }    printf("%d\n",Max);    return 0;}



原创粉丝点击