[編程題]連續最大和
.
熱度指數:38075 時間限制:1秒 空間限制:32768K
算法知識視頻講解
一個數組有 N 個元素,求連續子數組的最大和。 例如:[-1,2,1],和最大的連續子數組爲[2,1],其和爲 3
輸入描述:
輸入爲兩行。 第一行一個整數n(1 <= n <= 100000),表示一共有n個元素 第二行爲n個數,即每個元素,每個整數都在32位int範圍內。以空格分隔。
輸出描述:
所有連續子數組中和最大的值。
示例1
輸入
3 -1 2 1
輸出
3
思路:傳入數組後,將數組split()分割後放入map中,然後開始迭代全部數據,不斷累加並賦值給theMax()臨時記錄最大值),當累加結果>=0時正常累加,反之直接用下一元素覆蓋之前的累加結果,每次累加值變動後都與之前臨時記錄的最大值進行比較,如果大與之前的便替換之,知道迭代結束
python
while True:
try:
num=input() #第一行輸入傳入的數組中元素總數
tmp=list(map(int,input().split())) #第二行輸入數組放入map中
total,theMax=0,tmp[0]
for cur in tmp:
if total>=0:
total+=cur
else:
total=cur
if total>theMax:
theMax=total
print(theMax)
except:
break