题解 | #连续子数组的最大乘积#
连续子数组的最大乘积
http://www.nowcoder.com/practice/fd8c819c07c9493887bfac8549c119f4
#include <iostream>
#include <vector>
#include <climits>
using namespace std;
class solution
{
public:
int getResult(vector<int> &nums)
{
if (nums.size() == 1)
{
return nums[0];
}
int dp_MIN = nums[0];
int dp_MAX = nums[0];
int ret = INT_MIN;
for (int i = 1; i < nums.size(); i++)
{
int min_tmp = min(min(dp_MIN * nums[i], nums[i]), dp_MAX * nums[i]);
dp_MAX = max(max(dp_MAX * nums[i], nums[i]), dp_MIN * nums[i]);
dp_MIN = min_tmp;
ret = max(ret, dp_MAX);
}
return ret;
}
};
int main()
{
int n;
solution mSolution;
while (cin >> n)
{
cin.get();
vector<int> nums(n);
for (int i = 0; i < n; i++)
{
cin >> nums[i];
}
cout << mSolution.getResult(nums) << endl;
}
return 0;
}