最大子序列和python
在Python中,可以使用Kadane算法來解決最大子序列和問題。Kadane算法是一種動態規劃方法,用於找到一個數組中的最大子序列和。
以下是一個使用Kadane算法解決最大子序列和問題的Python代碼示例:
def max_subarray_sum(arr):
if not arr:
return 0
max_current = max_global = arr[0]
for num in arr[1:]:
max_current = max(num, max_global + num)
max_global = max(max_current, max_global)
return max_global
在這個函式中,我們首先檢查輸入數組是否為空。如果為空,則返回0。否則,我們初始化兩個變數:max_current
和max_global
,分別表示當前最大子序列的和和全局最大子序列的和。
接下來,我們遍歷數組中的每個數字,並將其與當前的最大子序列和進行比較。如果當前數字大於等於當前的最大子序列和加上當前數字,則更新max_current
為當前數字和當前的最大子序列和的和。同時,我們也要更新全局的最大子序列和max_global
。
最後,我們返回全局的最大子序列和max_global
作為結果。
使用示例:
arr = [1, -2, 3, 4, -1, 2, 1, -5, 4]
result = max_subarray_sum(arr)
print(result) # 輸出7,因為最大子序列和為[4, -1, 2]的和為7
注意:Kadane算法適用於任何大小的輸入數組,並且不需要額外的空間來存儲中間結果。