zoukankan      html  css  js  c++  java
  • 和最大子序列(动态规划)

    问题 1508: [蓝桥杯][算法提高VIP]和最大子序列

    时间限制: 1Sec 内存限制: 128MB 提交: 487 解决: 160

    题目描述
    对于一个给定的长度为N的整数序列A,它的“子序列”的定义是:A中非空的一段连续的元素(整数)。你要完成的任务是,在所有可能的子序列中,找到一个子序列,该子序列中所有元素的和是最大的(跟其他所有子序列相比)。程序要求你输出这个最大值。
    输入
    输入文件的第一行包含一个整数N,第二行包含N个整数,表示A。 
    其中 
    1  < =  N  < =  100000 
    -10000  < =  A[i]  < =  10000 
    输出
    输出仅包含一个整数,表示你算出的答案。 
    样例输入
    5 
    3  -2  3  -5  4 
    样例输出
    4

    #include "stdio.h"
    #include "stdlib.h"
    #include "iostream"
    #include "string.h"
    #include "math.h"
    #include "algorithm"
    #include "queue"
    #include "vector"
    #include "map"
    #define Mod 1000000007
    using namespace std;
    int main(){
        int n;
        scanf("%d", &n);
        int A[n];
        for(int i = 0; i < n; i++){
            scanf("%d", &A[i]);
        }
        int dp[n + 1];
        dp[0] = 0;
        int t = INT_MIN;
        for(int i = 1; i <= n; i++){
            dp[i] = max(dp[i - 1] + A[i - 1], A[i - 1]);
            //下面是关于 dp[i] = max(dp[i - 1] + A[i - 1], A[i - 1]);的注解 
            //dp[i]的值一般情况是连续i项A数组的和
            //如果加到A数组的第x项发现还没第A[x]大此时再加就必定不是最大序列了就将dp[x+1]=A[x];
            //意味着此时已经中断,重新开始往后寻找序列 
            t = max(t, dp[i]);
        }
        //cout << t << endl;
        for(int i=1;i<=n;i++)
        {
            
        cout<<dp[i]<<" ";    
        } 
        return 0;
    }
    #include <iostream>
    #include <cmath>
    #include <set>
    #include <algorithm>
    #include <string>
    using namespace std;
    const int maxn=10005;
    int main() {
    int a[maxn];
    int m;
    cin>>m;
    int dp[m+1];
    for(int i=0;i<m;i++)cin>>dp[i];
    int t=INT_MIN;
    for(int i=1;i<m;i++)
    {
    dp[i]=max(dp[i-1]+dp[i],dp[i]); 
    t=max(t,dp[i]); 
    }cout<<max(t,dp[0])<<endl;
    for(int i=0;i<m;i++)
    cout<<dp[i]<<" ";
    }

      

    不一样的烟火
  • 相关阅读:
    SDUT 2109 找女朋友
    Instant Complexity(模拟,递归)
    Lucky and Good Months by Gregorian Calendar(模拟)
    Wall(Graham算法)
    Beauty Contest(graham求凸包算法)
    A Round Peg in a Ground Hole(判断是否是凸包,点是否在凸包内,圆与多边形的关系)
    Pie(二分)
    Expanding Rods(二分)
    Fishnet(计算几何)
    Building a Space Station(kruskal,说好的数论呢)
  • 原文地址:https://www.cnblogs.com/cstdio1/p/10983055.html
Copyright © 2011-2022 走看看