在一個數組中找出和最大的連續幾個數。(至少包含一個數)
例如:
數組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,一直說第一組測試點未通過,找了好久才發現是這個錯了