2020经典DP题目:连续子数组最大和[python][动态规划]

连续子数组最大和

http://www.nowcoder.com/questionTerminal/03d341fb6c9d42debcdd38d82a0a545c

DP的核心思想是,如果以i为终止序号的某个连续序列最大和小于0,那么下一个输入加上一个负数必然小于此输入,于是干脆另起炉灶直接赋值改输入;否则,则一个正数加上该输入,最终结果都要比单纯使用该输入要大。【即把连续序列的和直接当成一个数跟下一个输入进行对比】

N = int(input())
dp = [-float('inf')] * N # dp[i]以i为终止序号的序列最大和
dp[0] = int(input())
for i in range(1, N):
    num = int(input())
    # 如果前者小于零,则直接放弃前串另起炉灶;否则加和
    dp[i] = num if dp[i-1] < 0 else (dp[i-1] + num)
print(max(dp))
全部评论

相关推荐

伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 15:46
已编辑
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务