您的位置:首页 > 编程语言 > C语言/C++

最大连续子序列和/乘积

2016-10-18 18:16 211 查看

思路

最大连续子序列乘积和最大连续子序列和不同,这里先回忆一下最大连续子序列和的最优解结构:


最大连续子序列和

我们用sum[i]来表示以arr[i]结尾的最大连续子序列和,则状态转移方程为:




最大连续子序列乘积

考虑存在负数的情况(ps:负负会得正),因此我们用两个辅助数组,max[i]和min[i],max[i]来表示以arr[i]结尾的最大连续子序列乘积,min[i]来表示以arr[i]结尾的最小连续子序列乘积,因此状态转移方程为:



and



最后打印出最大的max[i]就行。

答疑:

--为什么要用一个数组min[]?

--因为会存在负数,min[]就是为了找到负数中最小的,这样再乘上一个负数后就变成了一个较大的正数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 结构