《程式設計之法》 最大連續子陣列和

2021-07-28 22:44:33 字數 861 閱讀 8919

給定乙個整數陣列,陣列裡可能有正數、負數和零。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。例如,如果輸入的陣列為,那麼和為最大的連續子陣列為,和為18。

使用動態規劃的思想。令currsum是以當前元素結尾的最大連續子陣列的和,maxsum是全域性的最大子陣列的和,當往後掃瞄時,對第i個元素有兩種選擇,要麼放入前面找到的子陣列,要麼作為新子陣列的第乙個元素:如果currsum>0,則令currsum加上array[i];如果currsum<=0,則currsum被置為當前元素,即currsum=array[i]。而對於maxsum,則若maxsum < currsum,則更新maxsum=currsum,否則maxsum保持原值,不更新。

//

// created by huxijie on 17-3-18.

// 最大連續子陣列的和

#include

using

namespace

std;

int maxsubarraysum(int

array,int n)

} else }}

int j;

for (j = from; j < to ; ++j)

}cout

<< array[j] << "="

<< maxsum << endl;

}int main() ;

maxsubarraysum(array, n);

return

0;}

3+10-4+7+2=18

process finished with

exit code 0

程式設計之法 面試和演算法心得(最大連續子陣列和)

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

程式設計之法 面試和演算法心得(最大連續乘積子串)

給乙個浮點數序列,取最大乘積連續子串的值,例如 2.5,4,0,3,0.5,8,1,則取出的最大乘積連續子串為3,0.5,8。也就是說,上述陣列中,3 0.5 8這3個數的乘積30.58 12是最大的,而且是連續的。此最大乘積連續子串與最大乘積子串行不同,請勿混淆,前者子串要求連續,後者子串行不要求...

最大連續子陣列和

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