1. 程式人生 > >第三章實驗報告

第三章實驗報告

題目:

求最大子段和

問題描述:

給定n個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均為負數時,定義子段和為0。

演算法描述

設一個數組a[ ],用於存放n個數,定義一個整型sum存放最大和,定義一個整型b用於計算最大子段和。

用for語句訪問陣列,當b<0時,可將它直接賦值為a[i];

當b>0時,如果加上a[i]後小於0,就賦值a[i],大於零就和sun比較,如果比較後sum<b,就另sum=b,否則不變。

時間,空間複雜度

只需要迴圈n次,時間複雜度為O(n), 空間複雜度也一樣。

心得與體會:

與組員一起討論之後的結果如下:因為當總和小於0時,最後返回的結果都為0,所以當b已經小於0時可直接將a[i]的值賦給b,先前的陣列成員最大子段和都小於0可不用管了。