有n個不同的正整數數x1, x2, ... xn 排成一排,我們可以從左邊或右邊去掉連續的i個數(只能從兩邊刪除數),1<=i<=n,剩下n-i個數,再把剩下的數按以上操作處理,直到所有的數都被刪除為止。 每次操作都有乙個操作價值,比如現在要刪除從i位置到k位置上的所有的數。操作價值為|xi – xk|*(k-i+1),如果只去掉乙個數,操作價值為這個數的值。 任務:怎樣操作,使得刪完所有的數之後,得到的價值總和最大。
第一行為乙個正整數n,第二行有n個用空格隔開的n個不同的正整數。 3<=n<=100,n個運算元為1..1000 之間的整數。
輸出檔案remove.out 包含乙個正整數,為操作的最大值
654 29 196 21 133 118
768和前幾道題基本是一樣的參考一下前幾道題就可以.
1.石子合併
2.沙子合併
3.能量項鍊
f[i]j]表示的是從i開始刪除j個數得到的最大值,k表示刪除k個數,用k把區間化成兩部分,這裡題目是用的端點,需要做一下轉換。還是f[i][j]=max;
**
#include#includeusing namespace std;
int f[110][110];
int a[110];
int main()
for(j=2;j<=n;++j)//從i開始刪掉長度為j個數
//分開刪
for(int k=1;k}
}printf("%d",f[1][n]);
return 0;
}
區間型動態規劃
給定乙個序列 字串,進行一些操作 最後一步將序列 字串去頭 去尾 剩下的會是乙個區間 i,j 狀態自然定義為f i j 表示面對子串行 i j 時的最優性質 667.最長的回文序列 中文english 給一字串 s,找出在 s 中的最長回文子串行的長度.你可以假設 s 的最大長度為 1000.exa...
動態規劃 區間型
概述 最長的回文序列 取數是否必勝 給定乙個序列 字串,進行一些操作,最後一步會將序列 字串去頭 去尾 剩下的會是乙個區間 i,j 狀態自然定義為f i j 表示面對子串行 i,j 時的最優性質 1.題目描述 1.給定乙個字串s,長度是n,找到它最長的回文子串行的長度 例子 輸入 bbbab 輸出 ...
區間型動態規劃總結
區間型動態規劃,都是dp i j 由小的區間先計算,然後計算大的區間得到,模板就是 for int len 2 len n len int n s.length int dp new int n n int maxlen 0 for int i 0 i n i char ss s.tochararr...