题解 | #连续子数组最大和#

连续子数组最大和

http://www.nowcoder.com/practice/1718131e719746e9a56fb29c40cc8f95

求解连续子数组的最大和,问题可以分解为如下步骤:

  • 数组长度为0,返回0
  • 数组长度为1,返回数组第一个值
  • 数组长度大于1,从前往后,判断数组(第i个值+第i-1个值)于(第i个值)的大小,将其中较大值赋值给当前数组的第i个值。即计算数组从第一个值,到第i个值的最大子数组。
def max_sum(n, dp):
    if n == 0:
        return 0
    elif n == 1:
        return dp[0]
    else:
        for i in range(1, n):
                dp[i] = max(dp[i - 1] + dp[i], dp[i])
        return max(dp[:])

n = int(input())
s = input()
s = s.split()
dp = [int(s[i]) for i in range(len(s))]
print(max_sum(n, dp))
全部评论

相关推荐

10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务