原题题目
代码实现(首刷小部分看解大部分自解)
int maxProduct(int* nums, int numsSize){
int dp[numsSize][2],max = INT_MIN,i;
for(i=0;i<numsSize;i++)
{
if(nums[i] >= 0)
{
if(!i)
{
dp[i][0] = nums[i];
dp[i][1] = 0;
max = dp[i][0];
}
else
{
dp[i][0] = fmax(nums[i],dp[i-1][0] * nums[i]);
dp[i][1] = dp[i-1][1] * nums[i];
}
}
else
{
if(!i)
{
dp[i][1] = nums[0];
dp[i][0] = 0;
max = dp[i][1];
}
else
{
dp[i][0] = dp[i-1][1] * nums[i];
dp[i][1] = fmin(dp[i-1][0] * nums[i],nums[i]);
}
}
if(i) max = fmax(max,dp[i][0]);
}
return max;
}