求子陣列的最大和 DP

2021-06-14 03:27:13 字數 1685 閱讀 3089

【題目】

輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o(n)。

【輸入】

例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,和最大的子陣列為3, 10, -4, 7, 2

【輸出】

因此輸出為該子陣列的和18。

【解析】

因為是o(n)的複雜度,因此需採用的dp的思想,

記錄下當前元素之和

(為其最優狀態,既最大),

將其與目前所得的最大和比較,若大於則更新,否則繼續

。狀態的累加遵循這個過程:如果當前和小於0,則放棄該狀態,將其歸零。?

**

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

//求子陣列的最大和

//利用的是dp的思想,依次遍歷陣列中的每個元素,把他們相加,如果加起來小於0,則

//把當前元素之和清為0,否則則和最大和比較,更新最大和,最後得到必是子陣列的最大和

#include

usingnamespacestd;

intfindgreatestsubsum(constinta,constintsize)

if(maxsum==0)

}

returnmaxsum;

}

intmain(void);

cout<system("pause");

return0;

}

求子陣列最大和

題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。因為是o n 的複雜度,...

演算法總結 DP 求子陣列的最大和

快要畢業了,逐步把之前做過的一些演算法和資料結構,專案相關資料總結整理一下,一來溫習一下之前的知識,二來記錄下學習點滴,方便之後的學習。plain view plain copy print?題目描述 給定乙個整數陣列,陣列中有正數也有負數,陣列中連續的乙個或者多個整數組成乙個子陣列,每個子陣列都有...

求子陣列的最大和

題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 本題最初為2005年浙江大學計算機系的考研題的最後一道程式設計題,在2006年裡包括google在內的很多知名公司都把本題當作面試題。由於本...