• 最大子矩阵和 URAL 1146 Maximum Sum


    题目传送门

     1 /*
     2     最大子矩阵和:把二维降到一维,即把列压缩;然后看是否满足最大连续子序列;
     3     好像之前做过,没印象了,看来做过的题目要经常看看:)
     4 */
     5 #include <cstdio>
     6 #include <iostream>
     7 #include <cstring>
     8 #include <algorithm>
     9 using namespace std;
    10 
    11 const int MAXN = 1e2 + 10;
    12 const int INF = 0x3f3f3f3f;
    13 int a[MAXN][MAXN];
    14 int dp[MAXN][MAXN][MAXN];
    15 
    16 int main(void)        //URAL 1146 Maximum Sum
    17 {
    18     //freopen ("D.in", "r", stdin);
    19 
    20     int n;
    21     while (scanf ("%d", &n) == 1)
    22     {
    23         int ans = -INF;
    24         memset (dp, 0, sizeof (dp));
    25         for (int i=1; i<=n; ++i)
    26         {
    27             for (int j=1; j<=n; ++j)
    28             {
    29                 scanf ("%d", &a[i][j]);
    30             }
    31         }
    32 
    33         for (int i=1; i<=n; ++i)
    34         {
    35             for (int j=1; j<=n; ++j)
    36             {
    37                 int sum = 0;
    38                 for (int k=j; k>=1; --k)
    39                 {
    40                     sum += a[i][k];
    41                     dp[i][j][k] = max (sum + dp[i-1][j][k], sum);
    42                     ans = max (ans, dp[i][j][k]);
    43                 }
    44             }
    45         }
    46 
    47         printf ("%d
    ", ans);
    48     }
    49 
    50     return 0;
    51 }
    编译人生,运行世界!
  • 相关阅读:
    Springboot websocket学习Demo
    webpack与vue使用
    图片服务器图片剪切处理
    时间字段设置默认值
    函数的递归
    数据类型检测及封装
    隔行变色
    if-else案例–开关灯
    作用域
    数据类型核心操作步骤和原理
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4483119.html
Copyright © 2020-2023  润新知