最大子段和

2021-10-22 17:09:56 字數 534 閱讀 5794

給出乙個長度為 n 的序列 a,選出其中連續且非空的一段使得這段和最大。

輸入格式

第一行是乙個整數,表示序列的長度 n。

第二行有 n 個整數,第 i 個整數表示序列的第 i 個數字 a 。

輸出格式

輸出一行乙個整數表示答案。

思路:這道題其實看懂了就很簡單,我們可以假設前面輸入的資料加上當前數是否大於0,如果大於0則表示這些數是有價值的,我們可以將他們繼續向後加,並且記錄最大值max,仔細想想,如果前面記錄的一段值加上當前輸入的值,總和小於0,那麼他們就是沒有價值的,即使加入進來也不會對當前欄位的最大和有什麼幫助,我們就將記錄的變數賦值為0,重新進行計算,最後輸出我們每次的記錄中最大的那個數就可以了。

上**吧

#include

using

namespace std;

int n,sum,m,w;

intmain()

cout

return0;

}

最大子段和

設a 是n個整數的序列,稱為該序列的子串行,其中1 i j n.子串行的元素之和稱為a的子段和.例如,a 2,11,4,13,5,2 那麼它的子段和是 長度為1的子段和 2,11,4,13,5,2 長度為2的子段和 9,7,9,8,7 長度為3的子段和 5,20,4,6 長度為4的子段和 18,15...

最大子段和

問題表述 n個數 可能是負數 組成的序列a1,a2,an.求該序列 例如 序列 2,11,4,13,5,2 最大子段和 11 4 13 20。1 窮舉演算法 o n3 o n2 2 分治法 將序列a 1 n 從n 2處截成兩段 a 1 n 2 a n 2 1 n 例項 三 最大子段和 問題表述 n個...

最大子段和

再給頂的n個數的陣列中選出連續的若干個數,使得他們的和是最大的,即最大連續自序列和.列如.序列.1 2 3 1 6 5 9 結果 當取子串行 3,1,6,5,9 結果12 我的思路.1.最大連續子串行的開頭是在1.n之中.的最大連續和 2.求出以i,開頭的最大連續和,此時開頭已經確定了,那麼通過列舉...