zoukankan      html  css  js  c++  java
  • 最大连续区间和问题

    2017-08-27 16:38:47

    writer:pprp

    最大连续区间和,可以有很多种方法实现,其中最常见的是运用一维前缀和还有动态规划来解决的;

    代码如下:

    /*
    @theme:最大连续区间和的算法
    @writer:pprp
    @declare:有几种方法
    @date:2017/8/27
    */
    
    #include <bits/stdc++.h>
    
    using namespace std;
    const int maxn = 10000;
    int a[maxn];
    int sum[maxn];
    int ans;
    
    int main()
    {
        //法一、暴力解,这就不写了
        //法二、采用一维前缀和
    
        ios::sync_with_stdio(false);
        int N;
        cin >> N;
        for(int i = 0 ; i < N ; i++)
        {
            cin >> a[i];
        }
        sum[0] = a[0];
        for(int i = 1 ; i < N ; i++)
            sum[i] = sum[i-1] + a[i];
    
        ans = 0;
        for(int i = 0 ; i < N ; i++)
            for(int j = i+1 ; j < N ; j++)
                ans = max(ans,sum[j]-sum[i-1]);
                
                cout << ans << endl;
        //法三、动态规划
        int ans = 0;
        int tmp = 0;
        for(int i = 0 ; i < N ; i++)
        {
              tmp = max(tmp,0) + a[i];
              ans = max(ans, tmp);
        }
        
        cout << ans << endl;
        //总结,一般都采用的是第三种方法,比较省时间和空间
        return 0;
    }
  • 相关阅读:
    Rocky Linux8国内镜像源
    强制缓存和协商缓存的区别
    从源码来看VUE的执行流程
    plugin
    判断数据类型的方法
    获取函数参数
    BFC
    VUE的$nextTick
    HTTP
    JavaScript创建和触发自定义事件
  • 原文地址:https://www.cnblogs.com/pprp/p/7440729.html
Copyright © 2011-2022 走看看