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))