1. 程式人生 > >計算機考研真題 最大序列和

計算機考研真題 最大序列和

題目描述

給出一個整數序列S,其中有N個數,定義其中一個非空連續子序列T中所有數的和為T的“序列和”。 對於S的所有非空連續子序列T,求最大的序列和。 變數條件:N為正整數,N≤1000000,結果序列和在範圍(-2^63,2^63-1)以內。

輸入描述:

第一行為一個正整數N,第二行為N個整數,表示序列中的數。

輸出描述:

輸入可能包括多組資料,對於每一組輸入資料,
僅輸出一個數,表示最大序列和。
示例1

輸入

5
1 5 -3 2 4

6
1 -2 3 4 -10 6

4
-3 -1 -2 -5

輸出

9
7
-1






//計算機考研真題 最大序列和
/*
程式設計思想:
    這道題之前做過,看另一種巧的解法。
*/
//程式實現:
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    int N=0,i=0;
    while(cin>>N){
        int sum=0,Max=-9999999,x=0;
        
for(i=0;i<N;i++){ cin>>x; sum=max(sum+x,x); Max=max(Max,sum); } cout<<Max<<endl; } return 0; }