CD 32 陣列中子陣列的最大累乘積

2021-10-22 08:50:43 字數 1019 閱讀 4544

題目描述

給定乙個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...