• 51nod 1051


    一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值。

     
    例如:3*3的矩阵:
     
    -1 3 -1
    2 -1 3
    -3 1 2
     
    和最大的子矩阵是:
     
    3 -1
    -1 3
    1 2

    Input第1行:M和N,中间用空格隔开(2 <= M,N <= 500)。
    第2 - N + 1行:矩阵中的元素,每行M个数,中间用空格隔开。(-10^9 <= Mii <= 10^9)Output输出和的最大值。如果所有数都是负数,就输出0。Sample Input

    3 3
    -1 3 -1
    2 -1 3
    -3 1 2

    Sample Output

    7

    矩阵数据处理的时候,存储每列前i个元素的和,后面就暴力……在矩阵内部圈四边形的感觉……记录每个矩形内的最大和……emmmmm……不太会描述

    #include<iostream>
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    int n,m,a,ans,sum;
    int dp[505][505];
    int main()
    {
        scanf("%d%d", &m,&n);
        memset(dp, 0, sizeof(dp));
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
            {
                scanf("%d", &a);
                dp[i][j] = dp[i - 1][j] + a;
            }
        for (int i = 0; i < n; i++)
            for (int j = i; j < n; j++)
            {
                sum = 0;
                for (int k = 0; k < m; k++)
                {
                    sum += dp[j][k] - dp[i-1][k];
                    if (sum < 0) sum = 0;
                    ans = max(sum, ans);
                }
            }
        printf("%d
    ", ans);
        return 0;
    }
  • 相关阅读:
    506. 相对排名 Relative Ranks
    500. 单词是否在键盘上的同一行 Keyboard Row
    openstack live migration性能分析
    libvirt/qemu特性之numa
    nova Scheduling 配置
    Specify compute hosts with SSDs
    nova conductor
    osprofiler
    watcher
    stacktach和ceilometer
  • 原文地址:https://www.cnblogs.com/Egoist-/p/7413431.html
Copyright © 2020-2023  润新知