【leetcode】-152-乘积最大子数组-动态规划

 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());
    }

猜你喜欢

转载自blog.csdn.net/qq_39328436/article/details/113095431