https://blog.csdn.net/qq_39328436/article/details/112405890在这篇博客中写了最大子序列和的问题,f[i]=max(f[i-1]+nums[i],nums[i]),对这个题目的转移方程可以有所启发。
【动态规划】
int maxProduct(vector<int>& nums) {
int n=nums.size();
vector <int> maxF(n), minF(n);
maxF[0]=nums[0];
minF[0]=nums[0];
for (int i = 1; i < nums.size(); ++i)
{
maxF[i] = max(maxF[i - 1] * nums[i], max(nums[i], minF[i - 1] * nums[i]));
minF[i] = min(minF[i - 1] * nums[i], min(nums[i], maxF[i - 1] * nums[i]));
}
return *max_element(maxF.begin(),maxF.end());
}