给定一个长度为 的数组,数组中的数为整数。
请你选择一个非空连续子数组,使该子数组所有数之和尽可能大,子数组最小长度为1。求这个最大值。
第一行为一个正整数 ,代表数组的长度。第二行为 个整数 ,用空格隔开,代表数组中的每一个数。
连续子数组的最大之和。
8 1 -2 3 10 -4 7 2 -5
18
经分析可知,输入数组的子数组[3,10,-4,7,2]可以求得最大和为18
1 2
2
1 -10
-10
class Solution: def maxstr(self,n,nums): dp = [0]*n dp[0] = nums[0] for i in range(1,n): dp[i] = max(dp[i-1]+nums[i] , nums[i]) return max(dp) n = int(input()) nums = list(map(int,input().split())) a = Solution() b = a.maxstr(n,nums) print(b)
# 使用穷举的方法,但是导致超时,部分不能计算正确 n = int(input()) l = list(map(int,input().split())) l = l+[0,0] dp=[] for i in range(n): for k in range(i,n): dp.append(sum(l[i:k+1])) print(max(dp))