/*
區間dp
題意:插入或刪除字元來還原成回問串,每個字元的插入和刪除話費不一樣
問最小花費
思路:dp[j][i] 代表j到i區間的最小花費
以i為區間右端點,然後j從i-1往0遍歷,去求dp[j][i]的最小值
在求dp[j][i]的時候,我們已經求得了dp[j][i-1] dp[j+1][i]
選擇兩者之中小的乙個,再加上對應的字元的最小價值cot[i]或cot[j]
如果s[i] == s[j] ,那我們就不需要刪除或增加字元,
dp[j][i] 與 dp[j+1][i-1] 選乙個小的賦值給 dp[j][i]即可
*/# include
# include
# include
# include
# include
# define maxn 2005
using
namespace
std;
int dp[maxn][maxn],cot[27];
int main(void)
for(int i=1; i//往前推進
for(int j=i-1; j>=0; --j)
}printf("%d\n",dp[0][m-1]);
}return
0;}
NYOJ1023 還是回文(區間dp)
分析 這道題是乙個簡單區間的dp,狀態定義為dp i j i 到 j 這個區間形成回文的最小花費,分兩種情況討論 s i s j dp i j dp i 1 j 1 s i s j dp i j min dp i j 1 cost s j a dp i 1 j cost s i a cost tt ...
njoj1023 還是回文(區間dp
剛開始不理解狀態方程,後來問群上明神說一句數學歸納法的道理,覺得對dp又了解了一點。狀態方程 dp i j min dp i 1 j a i dp i j 1 a j 當str i str j dp i j min dp i j dp i 1 j 1 其中dp i j 表示從i j的最小花費,a i...
NYOJ 1023 還是回文 區間dp
時間限制 2000 ms 記憶體限制 65535 kb 難度 3描述 判斷回文串很簡單,把字串變成回文串也不難。現在我們增加點難度,給出一串字元 全部是小寫字母 新增或刪除乙個字元,都會產生一定的花費。那麼,將字串變成回文串的最小花費是多少呢?輸入多組資料 第乙個有兩個數n,m,分別表示字元的種數和...