最大子序列和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_currentmax_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算法適用於任何大小的輸入數組,並且不需要額外的空間來存儲中間結果。