這幾天看到這個問題,然後在網上沒能找到完整的答案,作者kay_zhyu給出了不錯的思路,而且針對大部分測試時都能給出正確的答案,但是在正負小數比較多時,有些結果不對。
其實質時,忽略了小數相乘時結果越來越小這個結論,當兩個小數相乘時,乘積肯定沒有當前這個數大,因而我們需要保留當前這個數作為最大的乘積。當然還要感謝kay_zhyu提供的思路。
下面給出完整並且正確的**:
#include "stdafx.h"
#includeusing namespace std;
#define inf 1e5;
double getmaxproduct(double *arr, int nlen)
else
pos = max(pos,arr[i]);
nag = min(nag,arr[i]);
ans = max(ans, pos);
if(nag > 0)
nag = 1;
if(pos < 0)
pos = 1;
} return ans;
} double max(const double a, const double b)
double min(const double a, const double b)
int main()
; //double arr[n]=;
//double arr[n]=;//144
//double arr[n]=;
double n = getmaxproduct(arr,5);
cout《當然我們使用動態規劃的話,那就更容易了,每次維護最大值和最小值,將a[i]乘上去,再更新最大最小值即可。
double maxproduct(double* arr, double len)
return largest;
}
程式設計師面試題精選 03 求子陣列的最大和
程式設計師面試題精選 03 求子陣列的最大和 題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸...
筆試面試之求子陣列最大和
輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 方法一 分別求出所有連續陣列子集,這個比較難想,用遞迴做,然後分別求出各個子集和大小,記錄最大值即可。複雜度n方 bool findgreates...
求子陣列的最大和
題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 本題最初為2005年浙江大學計算機系的考研題的最後一道程式設計題,在2006年裡包括google在內的很多知名公司都把本題當作面試題。由於本...