给定一个整数数组 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;
}