zoukankan      html  css  js  c++  java
  • 1007_Maximum Subsequence Sum (25分)[动态规划/最大和子序列]

    题意: 输出子序列的最大和以及子序列的首尾元素.如果存在多个最大和子序列取位置最靠左的那个.如果序列元素全<0,和为0,输出给定序列的首尾元素.

     1 #include<iostream>
     2 #include<vector>
     3 #include<queue>
     4 #include<map>
     5 #include<set>
     6 #include<cmath>
     7 #include<cstdio>
     8 #include<cstdlib>
     9 #include<cstring>
    10 #include<algorithm>
    11 using namespace std;
    12 
    13 const int maxLen = 10000 + 10;
    14 int val[maxLen], dp[maxLen], front[maxLen], N, maxSum, maxR;
    15 
    16 int main()
    17 {
    18     cin >> N;
    19     memset(dp, 0, sizeof(dp));
    20     memset(val, 0, sizeof(val));
    21     memset(front, 0, sizeof(front));
    22     for (int i = 0; i < N; i++) {
    23         cin >> val[i];
    24         dp[i] = val[i];
    25         front[i] = i;
    26     }
    27     maxSum = dp[0]; maxR = 0; //初始化
    28     for (int i = 1; i < N; i++) {
    29         if (dp[i - 1] >= 0) { //动态规划
    30             dp[i] = dp[i] + dp[i - 1];
    31             front[i] = front[i - 1];
    32         }
    33         if (dp[i] > maxSum) { //记录:最靠左的最大子序列
    34             maxSum = dp[i];
    35             maxR = i;
    36         }
    37     }
    38     if (maxSum < 0) {
    39         cout << 0 << " " << val[0] << " " << val[N - 1] << endl;
    40     }
    41     else {
    42         cout << maxSum << " " << val[front[maxR]] << " " << val[maxR] << endl;
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    wap学习记录
    vue router
    webpack 之 缓存处理
    webpack 之 plugin
    webpack 之 loader
    babel实践
    webpack 之 webpack-dev-server自动刷新
    webpack之source map
    vue笔记
    《高性能网站建设指南》笔记
  • 原文地址:https://www.cnblogs.com/NiBosS/p/12102484.html
Copyright © 2011-2022 走看看