題目:輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o(n)。
例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,和最大的子陣列為3, 10, -4, 7, 2,因此輸出為該子陣列的和18。
因為是o(n)的複雜度,因此需採用的dp的思想,記錄下當前元素之和(為其最優狀態,既最大),將其與目前所得的最大和比較,若大於則更新,否則繼續。狀態的累加遵循這個過程:如果當前和小於0,則放棄該狀態,將其歸零。
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//求子陣列的最大和
//利用的是dp的思想,依次遍歷陣列中的每個元素,把他們相加,如果加起來小於0,則
//把當前元素之和清為0,否則則和最大和比較,更新最大和,最後得到必是子陣列的最大和
#include
using
namespace
std;
int
findgreatestsubsum(
const
int
a,
const
int
size)
if
(maxsum==0)
}
return
maxsum;
}
int
main(
void
);
cout<
system
(
"pause"
);
return
0;
}
求子陣列的最大和
題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 本題最初為2005年浙江大學計算機系的考研題的最後一道程式設計題,在2006年裡包括google在內的很多知名公司都把本題當作面試題。由於本...
求子陣列的最大和
陣列 一 題目 感謝 提供的題目 求子陣列的最大和 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸...
求子陣列的最大和
題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求 時間複雜度為 o n 例 輸入的陣列為 1,2,3,10,4,7,2,5,和最大的子陣列為 3,10,4,7,2,因此輸出為該子陣列的和 18。分析 本題最初...