最大乘积

最大乘积连续子串

陌路散爱 提交于 2020-11-20 08:37:56
一、问题描述 输入一组浮点数,求出这个浮点数组最大乘积的连续子串。举个例子,浮点数组为str[]={-3,-5,0,-1,-2,-2},这时得出来的结果是前两个浮点数的乘积,即15。需要注意的是,这个子串是要求连续的,另外,子串的长度可以为1. 二、问题分析 这里给出两种思路,后续可能还会加入新的思路。 第一种是直接求解。即用双层循环。外面一层是从1到浮点数组的长度,里面的那层循环是当前的位置加1一直到浮点数组的结束,里面的循环来算所有的乘积。换句话说就是,内层循环每次从i+1开始到浮点数组结束的乘积,这些乘积是str[i]*str[i+1],str[i]*str[i+1]*str[i+2],...,str[i]*...*str[length(str)]中找到最大的那个。外层循环则是找到全局最大的那个。这个方法比较好想,只给出伪代码。下面是伪代码: for i = 0 to length(str) current = str[i] for j = i + 1 to length(str) current *= str[j] if(current_max < current) current_max = current end if(max < current_max) max = current_max end 第二种思路就是如果当前已经找到一个序列的最大的值为current