给定一个长度为
的数组,数组中的数为整数。
请你选择一个非空连续子数组,使该子数组所有数之和尽可能大。求这个最大值。
第一行为一个正整数,代表数组的长度。
第二行为个整数
,用空格隔开,代表数组中的每一个数。
连续子数组的最大之和。
3 3 -4 5
5
选择 [5] 这个子数组即可。
3 4 -3 5
6
选择 [4,-3,5] 这个子数组。
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))