最大連續子串行乘積

2021-06-09 19:02:09 字數 737 閱讀 1635

問題描述:給定乙個整數序列(可能有正數,0和負數),求它的乙個連續最大子串行乘積,如果乘積為負數,輸出-1

分析:假設陣列為a,直接利用動歸來求解,考慮到可能存在負數的情況,我們用max[i]來表示以a[i]結尾的最大連續子串行的乘積值,用min[i]表示以a[i]結尾的最小的連續子串行的乘積值,那麼狀態轉移方程為:

max[i]=max;

min[i]=min;

初始狀態為max[1]=min[1]=a[1]。**如下:/*

給定乙個整數陣列,有正有負數,0,正數組成,陣列下標從1算起

求最大連續子串行乘積,並輸出這個序列,如果最大子串行乘積為負數,那麼就輸出-1

用max[i]表示以a[i]結尾乘積最大的連續子串行

用min[i]表示以a[i]結尾乘積最小的連續子串行  因為有複數,所以儲存這個是必須的 */

void longest_multiple(int *a,int n)

min[1]=a[1];

max[1]=a[1];

int max_val=max[1];

for(int i=2;i<=n;i++)

if(max_val<0)

printf("%d",-1);

else

printf("%d",max_val);

//記憶體釋放

delete max;

delete min;

}

最大連續子串行之和,最大連續子串行乘積

最大連續子串行之和問題描述為 陣列中里有正數也有負數,連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和,求所有子陣列的和的最大值。分析,對陣列a進行一遍掃瞄,sum i 為前i個元素中,包含第i個元素且和最大的連續子陣列,maxsum儲存當前子陣列中最大和,對於a i 1 來說,sum i ...

最大連續子串行乘積

推薦 題目描述 給定乙個浮點數序列 可能有正數 0和負數 求出乙個最大的連續子串行乘積。輸入 輸入可能包含多個測試樣例。每個測試樣例的第一行僅包含正整數 n n 100000 表示浮點數序列的個數。第二行輸入n個浮點數用空格分隔。輸入資料保證所有數字乘積在雙精度浮點數表示的範圍內。輸出 對應每個測試...

最大連續子串行乘積

最大連續子串行乘積和最大連續子串行和不同,這裡先回憶一下最大連續子串行和的最優解結構 我們用sum i 來表示以arr i 結尾的最大連續子串行和,則狀態轉移方程為 考慮存在負數的情況 ps 負負會得正 因此我們用兩個輔助陣列,max i 和min i max i 來表示以arr i 結尾的最大連續...