軟件工程第三次作業
題目
題目(1):最大連續子數組和(最大子段和)
問題: 給定n個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均為負數時定義子段和為0,依此定義,所求的最優值為: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n
例如,當(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)時,最大子段和為20。
算法
從頭開始累加數組的元素,首先判斷sum的值是正,負,或者0,如果sum的值小于等于0,則把數組當前數值賦給sum,如果sum的值大于0,就把數組當前值加給sum,接著判斷我們定義好的最大值max,如果當前的sum值大于max的值,就把sum的值賦給max,再接著循環,直到循環結束。
代碼
代碼如下圖所示

單元測試
賦值有三種可能:
(1)數值有正數,負數和0
(2)數值全為0
(3)數值全為正數
當所給整數正,負數,0都存在時

當所給整數全為0時

當所給整數全為正數時

三次單元測試結果如下圖所示

coding鏈接如下
https://coding.net/u/wobenyongdenuan/p/Thethirdhomework/git?public=true
浙公網安備 33010602011771號