題目描述
給定乙個double型別的陣列arr,其中的元素可正、可負、可0,返回子陣列累乘的最大乘積。例如,arr=[-2.5, 4, 0, 3, 0.5, 8, -1],子陣列[3, 0.5, 8]累乘可以獲得最大的乘積12,所以返回12
[要求]
時間複雜度為o(n)o(n),空間複雜度為o(1)o(1)
輸入描述:
第一行乙個整數n。表示陣列長度。
接下來一行n個浮點數表示陣列內的數
輸出描述:
輸出乙個浮點數表示答案,保留到小數點後兩位
示例1輸入複製7
-2.5 4 0 3 0.5 8 -1
輸出複製
12.00
思路:動態規劃
dp[0][i]:以i結尾的最大的成績 = max( dp[1][i] *arr[i] , max(dp[0][i-1]*arr[i], arr[i]) )
dp[1][i]: 以i結尾的最小的成績 =min( dp[1][i] *arr[i] , min(dp[0][i-1]*arr[i], arr[i]) )
#include
#include
#include
#include
using
namespace std;
double arr[
100007];
double dp[2]
[100007];
intmain()
for(
int i=
0;i)printf
("%.2lf"
,res)
;return0;
}
佬的**:
#include
using
namespace std;
intmain()
printf
("%.2f\n"
, s)
;return0;
}
陣列中子陣列的最大累乘積
陣列中子陣列的最大累乘積 給定乙個double型別的陣列arr,其中的元素可正 可負 可0,返回子陣列累乘的最大乘積。例如,arr 2.5,4,0,3,0.5,8,1 子陣列 3,0.5,8 累乘可以獲得最大的乘積12,所以返回12 要求 時間複雜度為o n o n o n 空間複雜度為o 1 o ...
陣列中字陣列的最大累乘積
題目 給定乙個double型別的陣列arr,其中元素可正 可負 可0,返回子陣列累成的最大乘積。例如,arr 2.5,4,0,3,0.5,8,1 子陣列 3,0.5,8 累乘可以獲得最大的乘積12,故返回12 要求 時間複雜度o n 額外空間複雜度o 1 public static void mai...
陣列中子陣列和的最大值
輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。例如輸入的陣列為1,2,3,1...