生活随笔
收集整理的这篇文章主要介绍了
连续最大子序列乘积
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
含有正负
https://blog.csdn.net/u012469987/article/details/50897291
https://blog.csdn.net/coolwriter/article/details/79916458
#include <bits/stdc++.h>
using namespace std;
vector<int>::iterator it;
class Solution{public:int maxProduct(vector<int>& nums){int n=nums.size();long long MAX=nums[0];long long dp_max=nums[0;long long dp_min=nums[0]; for(int i=1;i<n;++i){long long dpM = max( (long long )nums[i],max( dp_max * nums[i] , dp_min * nums[i]) );long long dpm = min( (long long )nums[i],min( dp_max * nums[i] , dp_min * nums[i]) ); dp_max=dpM; dp_min=dpm;MAX = max(MAX , dp_max);}return MAX;}
};
int main(){Solution s;int n,a;vector<int>v;it=v.begin();while(cin>>n){v.clear();for(int i=0;i<n;++i){scanf("%d",&a);v.push_back(a);}cout<<s.maxProduct(v) << endl;
}return 0;
}
总结
以上是生活随笔为你收集整理的连续最大子序列乘积的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。