求乙個序列中乘積最大的連續子串行的值.
①狀態:
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 ...