解题思路
一开始以为和最长子序列一样,使用一个dp[n]记录以nums[n]为末尾元素的,最大子序列和。后来发现还有负负得正的情况。所以使用dp_min维护最小序列乘积,最后状态转移的时候,需要判断三个值得大小。
dp_max[i] = max({dp_max[i-1]dp_max[i], dp_min[i-1]dp_max[i], dp_max[i]});
代码
cpp
|
|
一开始以为和最长子序列一样,使用一个dp[n]记录以nums[n]为末尾元素的,最大子序列和。后来发现还有负负得正的情况。所以使用dp_min维护最小序列乘积,最后状态转移的时候,需要判断三个值得大小。
dp_max[i] = max({dp_max[i-1]dp_max[i], dp_min[i-1]dp_max[i], dp_max[i]});
|
|