17-求连续数组和最大的序列

Posted ystraw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了17-求连续数组和最大的序列相关的知识,希望对你有一定的参考价值。

/* 题目内容:

给定长度为n的整数序列,a[1...n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大.或者求出最大的这个和.例如(-2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4].

输入描述

第一行为一个整数n,表示数组有n个数据,第二行依次输入n个整数

输出描述

计算出n个整数中连续k个数的最大和的那个k个连续的数

输入样例




输出样例


*/
//借鉴前一题
#include <iostream>
using namespace std;
int a[10000];
int f[10000];

int main(){
    int n;
    cin >> n;
    for(int i = 0; i < n; i++)
        cin >> a[i];
    f[0] = a[0];
    int max = a[0];
    for(int i = 1; i < n; i++){
        if(f[i - 1] > 0)
            f[i] = f[i - 1] + a[i];
        else
            f[i] = a[i];
        if(max < f[i])
            max = f[i];
    }
    int x = 0, y = 0, flagx = 1;
    for(int i = n - 1; i >= 0; i--){
        if(max == f[i] && flagx){
            x = i;
            flagx = 0;
        }
        y = x;
        if(f[i] < 0)
        {    y = i + 1;
            break;
        }
    }
//    cout << y << " " << x << endl;
    for(int i = y; i <= x; i++)
        cout << a[i] << " ";
    return 0;
}

以上是关于17-求连续数组和最大的序列的主要内容,如果未能解决你的问题,请参考以下文章

求连续序列的最大子序列和

求最短连续子序列

16-求连续数组和最大

剑指[42]_最大子序列之和(连续子数组的最大和)

Leetcode53(求最大子序和):纯逻辑思路

DP--HDU 1003求数字串中的最大连续序列(含有DP过程详细分析)