#此题利用dp的思路,dp数组代表着当前位置的最大和 n=int(input()) nums=list(map(int,input().split())) lenth=len(nums) dp=[float("-inf")]*lenth #float("-inf")代表着无穷小的数,不写为0主要因为测试用例有负数 dp[0]=nums[0] #将第一位置为数组第一个数,因为在这个位置的最大和就是他自己 for i in range(1,lenth): #后面依次遍历,主要比较它本身和它加上前一位置最大和哪个更大 dp[i]=max(dp[i-1]+nums[i],nums[i]) print(max(dp)) #最后返回dp数组最大的那个就行了