最大的連續子串行的和(輸出子串行版)

2021-08-22 10:04:12 字數 930 閱讀 3577

在學習動態規劃時,看到了這個求連續子串行的最大和問題,在看了些部落格之後,發現一般都是按題目要求,只是輸出了最大的和,於是我想著怎麼把子序列也輸出來。

首先講講單純輸出最大和的時候吧。見核心部分**:

cur_sum += num;

if(max < cur_sum )

if (cur_sum < 0)

這是我在別的博主那裡摘來的(不是複製,所以有點不一樣,但是意思差不多),這段**不考慮全部是負數的情況,因為意義不大。當cur_sum小於0時,cur_sum = 0 

,因為這就相當於  ,把前面那一段資料看成乙個整體,這個整體的和為負數,而加上乙個負數一定會減小資料的,所以應當捨棄前面那個整體,並將cur_sum = 0。

對於輸出子串行和:

我想到的是定義乙個變數lock,用這個標誌來判斷是否應當更新序列的起始位置。   

當有了新的 max 值   同時   經過了乙個了一次cur_sum < 0時,那麼l就要更新序列的起始位置了,同時要把lock變數取反。

lock = 0;

if(max < cur_sum )

temp_e = i;

}if (cur_sum < 0)

final  :  完整**

#include #include #include #include int main(int argc, char const *argv)

temp_e = i;

} if (cur_sum < 0)

} printf("\n%d %d|max = %d\n",temp_l,temp_e,max );

return 0;

}

和最大的連續子串行

maximum subarray sum 2016京東校園招聘數字營銷崗的筆試題 問題描述 乙個一維陣列同時包含有正整數和負整數,找到陣列裡和最大的連續子串行 如 給定陣列,最大和是7,像merge sort 一樣用遞迴的方法實現,具體可參考這裡 時間複雜度o nlog n 這個方法就是方法1的核心...

最大連續子串行的和

問題描述 輸入一組整數,求出這組數字子串行和中最大值。也就是只要求出最大子串行的和,不必求出最大的那個序列。例如 序列 2 11 4 13 5 2,則最大子串行和為20。序列 6 2 4 7 5 3 2 1 6 9 10 2,則最大子串行和為16。演算法一 窮舉法,複雜度o n 3 最容易想到也是最...

最大連續子串行的和

暴力列舉法 o n 3 級複雜度,可以求出最大連續子串行的範圍 直接兩個for迴圈枚舉子序列的首尾,然後再來個迴圈計算序列的和,每次更新和的最大值。include using namespace std define n 100005 define inf 0x3f3f3f3f int num n ...