Python|計蒜客——最大子陣列

在一個數組中找出和最大的連續幾個數。(至少包含一個數)

例如:

數組A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],則連續的子序列[4,−1,2,1]有最大的和6.

輸入格式

第一行輸入一個不超過1000的整數n。

第二行輸入n個整數A[i]。

輸出格式

第一行輸出一個整數,表示最大的和。

樣例輸入

3 1 1 -2
樣例輸出
2

代碼:

n = int(input())
A = [int(i) for i in input().split()]
sum = -65535
flag = 0
for i in A:
    flag += i
    if sum < flag:
        sum = flag
    if flag <= 0:
        flag = 0       
print(sum)

分析:
1、這是一個貪心算法,首先建一個臨時變量,把前面的加起來的與加完後的值比較,如果比加完後的值大,則置換最大和的值。否則繼續加,當臨時和小於0.這時應置和爲0。
2、sum = -65535。因爲題目中是說不超過1000的整數n,因爲下限就是int型的最小下限,即爲-65535。我之前是sum = 0,一直說第一組測試點未通過,找了好久才發現是這個錯了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章