算法題-求數組中 連續子數組最大和

[編程題]連續最大和

.
熱度指數: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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章