经典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))