和最大子串行

2021-06-22 07:43:51 字數 533 閱讀 3509

問題描述:第一行輸入乙個正整數n(1 < n < 100001),第二行輸入n個整數a(0 < a < 10000 ),求該組整數子串行最大的和。

解決這個問題應該考慮輸入n較大的情況,也就是說,輸入100000個數字判斷它的和最大子串行應當也能很快地算出來。我看過很多求解的**,有三重for迴圈的,有兩重for迴圈的,也有使用遞迴,但這些方法大多要麼超時,要麼棧溢位,當然一開始我做的時候也出現過類似的情況,但最終我用一層迴圈實現。

那麼,怎麼使用一層迴圈實現呢?首先定義乙個變數long long int large來表示最大的和,變數long long int lastresu表示上乙個加法的結果,然後從陣列a的0下標開始,與後面的元素做加法運算,與些同時,large得到每一次加法前的最大的和,接著判斷加法運算的結果,若小於0,則將上乙個下標賦值給lastresu,繼續做迴圈

long long large = -100000;

void fun(int* arr, int n)

}int main()

最大子串行和

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

和最大子串行

時間限制 1 sec 記憶體限制 512 mb 提交 3 解決 3 提交 狀態 討論版 對於乙個給定的長度為n的整數序列a,它的 子串行 的定義是 a中非空的一段連續的元素 整數 你要完成的任務是,在所有可能的子串行中,找到乙個子串行,該子串行中所有元素的和是最大的 跟其他所有子串行相比 程式要求你...

最大子串行和

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