和最大子串行

2021-07-26 08:23:58 字數 807 閱讀 9108

時間限制: 1 sec  記憶體限制: 512 mb

提交: 3  解決: 3 [

提交][

狀態][

討論版]

對於乙個給定的長度為n的整數序列a,它的「子串行」的定義是:a中非空的一段連續的元素(整數)。你要完成的任務是,在所有可能的子串行中,找到乙個子串行,該子串行中所有元素的和是最大的(跟其他所有子串行相比)。程式要求你輸出這個最大值。

輸入檔案的第一行包含乙個整數n,第二行包含n個整數,表示a。

其中1 <= n <= 100000

-10000 <= a[i] <= 10000

輸出僅包含乙個整數,表示你算出的答案。

53 -2 3 -5 4
4
最大子串行方法:只有前i項的和大於0就一直擴充套件,否則丟棄之前的子串行開始新的子串行,同時記下各個子串行的和,最後找到最大子串行。

最大子串行是要找出由數組成的一維陣列中和最大的連續子串行。比如的最大子串行就是 ,它的和是8,達到最大;而 的最大子串行是,它的和是6。你已經看出來了,找最大子串行的方法很簡單,只要前i項的和還沒有小於0那麼子串行就一直向後擴充套件,否則丟棄之前的子串行開始新的子串行,同時我們要記下各個子串行的和,最後找到和最大的子串行。

#include#includeusing namespace std;

int main()

t=a[0];

for(i=1;it)

t=a[i];

}if(s==n)

coutsum=temp;

if(temp<0)

temp=0;

}cout<

和最大子串行

問題描述 第一行輸入乙個正整數n 1 n 100001 第二行輸入n個整數a 0 a 10000 求該組整數子串行最大的和。解決這個問題應該考慮輸入n較大的情況,也就是說,輸入100000個數字判斷它的和最大子串行應當也能很快地算出來。我看過很多求解的 有三重for迴圈的,有兩重for迴圈的,也有使...

最大子串行和

最大子串行是要找出由數組成的一維陣列中和最大的連續子串行。比如的最大子串行就是 它的和是8,達到最大 而 的最大子串行是,它的和是6。找最大子串行的方法很簡單,只要前i項的和還沒有小於0那麼子串行就一直向後擴充套件,否則丟棄之前的子串行開始新的子串行,同時我們要記下各個子串行的和,最後找到和最大的子...

最大子串行和

求最大子串行的和是一道經典的動態規劃題目 給乙個陣列,求出陣列中和最大的子串行,輸出最大的和,有些題目還需要輸出子串行的開始和結束位置 題目參考 leetcode hdoj 思路 動態規劃最重要的就是找到遞推關係,對於陣列中的每乙個數來說都有兩種選擇 和前面的數字一起構成子串行,或者單獨開始成為下一...