一、问题描述
给定一个浮点数数组,任意取出数组中的若干个连续的数相乘,请找出其中乘积最大的子数组。
【例如】
给定数组{-2.5,4,0,3,0.5,8,-1},则取出的最大乘积子数组为{3,0.5,8}。
二、程序实现
/***********************************************
Author:tmw
Date:2018-3-1
**********************************************/
#include <stdio.h>
#include <stdlib.h>
float max( float a, float b )
{
return a>b?a:b;
}
float find_maxSubarray_multiplication(float array[], int array_len)
{
/**初始化局部最大乘积和全局最大乘积**/
float subTimes = array[0];
float maxTimes = array[0];
int i;
for( i = 1 ; i < array_len ; i++ )
{
subTimes = max(array[i],subTimes*array[i]);
maxTimes = max(subTimes,maxTimes);
}
return maxTimes;
}