#
# 
# @param arr double浮点型一维数组 
# @return double浮点型
#
class Solution:
    def maxProduct(self , arr ):
        # write code here
        #由于本题空间复杂度为O(1),故不能创建dp数组,保存状态即可
        maxP = arr[0] #最大乘积,初始化为数组第一个元素较合理
        state = 0 #只用一个变量保存状态即可
        for i in range(len(arr)):
            #当区间只有一个元素时,初始化State
            state = arr[i]
            maxP = max(maxP,state)
            for j in range(i+1,len(arr)):                
                #当区间有多个元素时,使用递归公式:dp[i][j] = dp[i][j-1]*arr[j]
                state = state*arr[j]
                maxP = max(maxP,state)             
        return maxP