经典dp:dp[i],表示以i结尾的子串连续子数组最大和为dp[i]

递推dp[i]分类:

  • dp[i - 1] + nums[i]: 连上之前的子串
  • nums[i]:独立成串

! 注意 是连续的哦,所以不包括 dp[i - 1] 这个类

n = int(input())
nums = list(map(int, input().split()))
dp = [0] * len(nums)
dp[0] = nums[0]
for i in range(1, n):
    dp[i] = max(dp[i - 1] + nums[i], nums[i]) 
print(max(dp))