3 求子陣列的最大和

2021-05-23 11:16:05 字數 1156 閱讀 8148

題目:

輸入乙個整形陣列,陣列裡有正數也有負數。

陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。

求所有子陣列的和的最大值。要求時間複雜度為o(n)。

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

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

舉例,例如有以下陣列:

-2, 5, 3, -6, 4, -8, 6

符合條件的子陣列為5,3, 則5,3相鄰的-2, -6滿足乙個條件:

以-2 結尾或者以-6開頭的子陣列之和必定小於等於0,否則5,3就不可能和最大

而且只要陣列不全是負數,只要滿足上面這個條件就必定是我們要找的子陣列。

c# codes as below:

using

system;

namespace ;

//int array = ;

//int array = ;

//int array = ;

//int array = ;

//int array = ;

int array = ;

int summax;

int array2 = new

runclass().getmaxsumstring(array,out summax);

console.writeline(summax);

console.writeline();

foreach (int i in array2)

console.readkey(); }

public

int getmaxsumstring(int array, out

int summax)

else

if (sum < 0)

if (array[i] > max)

max = array[i]; }

if (start == -1) ;

} int resultarray = new

int[end - start + 1];

for (int i = start; i <= end; i++)

return resultarray; }

} }

3 求子陣列的最大和

題目 輸入乙個整形陣列,陣列裡有正有負。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 分析 由時間複雜度可見,應該是遍歷一次就能找出最大和子陣列的和。分析這樣的子陣列的特徵,可得 這個最大子串和的初始值一定是從正數開始的 反證法可證...

求子陣列最大和

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

求子陣列的最大和

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