注册 登录
编程论坛 C++教室

最大连续子序列和

zsy142857 发布于 2018-04-01 16:11, 1420 次点击
#include<iostream>
#include<algorithm>
#define N 100005
using namespace std;
int n,x[N],f[N];
int main(){
    cin>>n;
    for(int i=0;i<n;i++) cin>>x[i];
    f[0]=x[0];
    for(int i=1;i<n;i++){
        if(f[i-1]>0){
            f[i]=f[i-1]+x[i];
            //这里写代码   
        }
        f[i]=x[i];
    }
    cout<<*max_element(f,f+n)<<endl;
    return 0;
}
如何截取最大连续子序列和的第一项和最后一项?
3 回复
#2
rjsp2018-04-02 08:45
我还是重写一个吧
程序代码:
#include <iostream>
using namespace std;

int main( void )
{
    int sum_max = 0;
    int sum = 0;

    size_t n;
    cin >> n;
    for( size_t i=0; i!=n; ++i )
    {
        int v;
        cin >> v;
        sum += v;

        if( sum < 0 )
            sum = 0;
        else
            sum_max = sum>sum_max ? sum : sum_max;
    }

    cout << sum_max << endl;
}

#3
zsy1428572018-04-06 11:08
这个程序的结果好像和我的程序结果一样啊
#4
zsy1428572018-04-06 11:10
子序列最后一项已搞定,就是第一项不知道怎么求
1