Python 題目

PROBLEM

dp動態規劃

一題一題刷

你的任務是找出:在所有可能的連續天數當中,哪一段的總收益最高?這個最高收益就是 你的程式必須輸出的連續最大收益。假設某人連續6天的投資結果為: −99, 10, −9, 10, −5, 4 在這些天數中,連續某一段期間的最大總收益是: 10 + (−9) + 10 = 11 這段最佳投資期間出現在第2、3、4天。請你寫出能計算這個「連續最大收益」的程式。

num = int(input())
for i in range(num):
    rounds = int(input())
    if rounds == 0:
        break
    else:
        moneys = list(map(int,input().split(' ')))
        dp = moneys
        for i in range(1,len(moneys)):
            dp[i] = max(moneys[i], moneys[i] + dp[i-1])

        # 暴力解
        # ans = max(ans,max(moneys))
        # for i in range(len(moneys)):
        #     temp_n = 0
        #     for j in range(i,len(moneys)):
        #         temp_n += moneys[j]
        #         ans = max(ans,temp_n)
    if max(dp) > 0:
        print(f"The maximum winning streak is {max(dp)}.")
    else:
        print("Losing streak.")