這道題是乙個動態規劃問題,可以使用分治法和遞推法解決。我使用的是遞推法。coding位址
def deal(arrlist:list)->int:
""":param arrlist: 傳入數列,引數型別為列表
:return:最大子陣列之和
"""flag = true
if len(arrlist)==0:
return 0
for d in arrlist:
if d>0:
flag = false
if flag:
return 0
max = 0;dp = 0
for d in arrlist:
if dp>0:
dp = dp + d
else:
dp = d
if dp>max:
max = dp
return max
我的測試實現了條件/組合覆蓋import unittest
from project1.main import deal
class mytestcase(unittest.testcase):
def test(self):
self.assertequal(deal([1,2,-1,4]), 6)
self.assertequal(deal([-2,11,-4,13,-20,-2]), 20)
self.assertequal(deal([-1,-2,-3,-4]), 0)
if __name__ == '__main__':
unittest.main()
測試序號
測試用例
預期結果
軟體工程(2019)第三次作業
給定n個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的子段和的最大值。當所給的整數均為負數時定義子段和為0,依此定義,所求的最優值為 max,1 i j n 例如,當 a 1 a 2 a 3 a 4 a 5 a 6 2,11,4,13,5,2 時...
軟體工程(2019)第三次作業
1 首先定義子陣列和以及最大子陣列和為零 陣列下標i 0 2 i是否大於陣列長度?否 進行 3 是 返回最大子陣列和,結束!3 取第i個陣列值,子陣列和 子陣列和 第一i個陣列值。進行 4 4 比較子陣列和與最大陣列和大小,如果子陣列和大,最大陣列和值取為子陣列和值 如果子陣列和小,子陣列和重新歸零...
軟體工程實踐2019第三次作業
github psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 小時 planning 計畫1h 0.5h estimate 估計這個任務需要多少時間 22h21h development 開發5h 3hanalysis 需求分析 包括學習新技...