51Nod-1051-最大子矩阵和

来源:互联网 发布:淘宝打开店铺自动收藏 编辑:程序博客网 时间:2024/04/30 04:31

ACM模版

描述

描述

题解

这里需要格外注意的是,M和N分别指的是列数和行数,而不是行数和列数,这个能把你坑死……O(N^3)的复杂度可以过。

代码

#include <iostream>#include <cstdio>typedef long long ll;using namespace std;const int MAXN = 505;ll Matrix[MAXN][MAXN];int main(int argc, const char * argv[]){//    freopen("input.txt", "r", stdin);//    freopen("input.txt", "w", stdin);    int M, N;    cin >> M >> N;    int A;    for (int i = 1; i <= N; i++)    {        for (int j = 1; j <= M; j++)        {            scanf("%d", &A);            Matrix[i][j] = Matrix[i - 1][j] + A;        }    }    long long ans = 0;    for (int i = 1; i <= N; i++)    {        for (int j = i; j <= N; j++)        {            int sum = 0;            for (int k = 1; k <= M; k++)            {                sum += Matrix[j][k] - Matrix[i - 1][k];                if (sum < 0)                {                    sum = 0;                }                else if (sum > ans)                {                    ans = sum;                }            }        }    }    std::cout << ans << '\n';    return 0;}
0 0