這道題要求時間複雜度為o(n),空間複雜度為o(1),因此用dp是最簡單的做法。由於這道題存在負數,所以我在儲存最大值時,也儲存了最小值。
#include
#include
#include
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
intmaxproduct
(vector<
int>
& arr,
const
int&n)
return max3;
}int
main()
if(n <
3)cout <<
"資料量太小"
<< endl;
else
cout <<
maxproduct
(arr, n)
<< endl;
return0;
}
dp 最大乘積
今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數字串,要求選手使用k個乘號將它分成...
求解最大乘積問題 C 實現
給定乙個無序陣列,包含正數 負數和0,要求從中找到3個數的乘積,使得乘積最大,並且時間複雜度為o n 空間複雜度為o 1 無序整數陣列a n 滿足條件的最大乘積。43 4 1 2 定義兩個容器,存放最大三個正數 和 最小兩個負數 考慮負負得正 然後遍歷一遍陣列,每遍歷到乙個元素,就和對應的容器進行判...
最大乘積問題
題目描述 輸入n個元素組成的序列s,找出乙個乘積最大的連續子串行,輸出最大乘積的值。如果這個最大乘積不是正數,輸出0。n小於18,每個元素值的絕對值不大於10。輸入先輸入n的值,再依次輸入n個數的序列,遇到檔案末尾結束。輸出在一行輸出最大乘積的值。樣例輸入 52 5 1 2 1 樣例輸出 20當看到...