DP 4 最長序列型

2021-09-27 08:55:31 字數 687 閱讀 2254

求乙個序列中乘積最大的連續子串行的值.

①狀態:

f[i]=最後乙個元素為a[i]的連續子串行的最大值.

因為在乘積中乙個負數乘以負數為大的正數,所以連續子串行的最小值也是當前狀態

g[i]=最後乙個元素為a[i]的連續子串行的最小值.

②初始條件:

f[0]=a[0]

g[0]=a[0]

③轉移方程:

f[i] = max(max(f[i-1]*a[i],g[i-1]*a[i]),a[i])

g[i] = min(min(f[i-1]*a[i],g[i-1]*a[i]),a[i])

#include #include using namespace std;

int main()

int n = vec.size();

vectorf(n);//以vec[i]結尾的連續子串行的最大值

vectorg(n);//以vec[i]結尾的連續子串行的最小值

f[0] = vec[0];

g[0] = vec[0];

int res;

for(int i=1;icout

}

假的動態DP 最長序列

最長連續上公升子串行 include int main int a 100 dp 100 i,j,n,x 0,max scanf d n for i 0 i 輸入陣列,並初始化 dp的值 scanf d a i dp i 1 for i 1 i 把每個數與前面的數進行比較 for j x j 比較上...

連續正面的最長序列問題

設想你拋一枚硬幣n次,你期望看到的連續正面的最長序列是多長?這是演算法導論第四章裡的乙個問題,今天看了好久,才明白過來,在這裡做個記錄。書上從兩個不同的角度分析了這個問題,乙個是從概率的角度,通過計算這個序列長度的上界和下界推導出序列長度,乙個是利用書上所說的指示隨機變數 indicator ran...

1201 簡易版最長序列

簡易版最長序列 time limit 1000ms memory limit 65536k total submit 60 accepted 43 description 給你一組數 未排序 請你寫設計乙個程式 求出裡面個數最多的數。並輸出這個數的長度。例如 給你的數是 1 2 3 3 4 4 5 ...