NYOJ1023 還是回文(區間dp)

2021-07-05 03:59:24 字數 627 閱讀 4272

分析:

這道題是乙個簡單區間的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-'a'】為刪除或新增字元tt的最小花費。

#include#include#includeusing namespace std;

const int maxn = 2*1e3 + 10;

int dp[maxn][maxn];

int cost[maxn];

int main()

memset(dp, 0, sizeof(dp));

for(int j = 1; j < n; j++)

for(int i = j-1; i >= 0; i--)

int ans = dp[0][n-1];

printf("%d\n", ans);

}return 0;

}

NYOJ 1023 還是回文 區間dp

時間限制 2000 ms 記憶體限制 65535 kb 難度 3描述 判斷回文串很簡單,把字串變成回文串也不難。現在我們增加點難度,給出一串字元 全部是小寫字母 新增或刪除乙個字元,都會產生一定的花費。那麼,將字串變成回文串的最小花費是多少呢?輸入多組資料 第乙個有兩個數n,m,分別表示字元的種數和...

NYOJ 1023 還是回文

時間限制 2000 ms 記憶體限制 65535 kb 難度 3 描述判斷回文串很簡單,把字串變成回文串也不難。現在我們增加點難度,給出一串字元 全部是小寫字母 新增或刪除乙個字元,都會產生一定的花費。那麼,將字串變成回文串的最小花費是多少呢?輸入多組資料 第乙個有兩個數n,m,分別表示字元的種數和...

NYOJ1023 還是回文 區間DP,詳細

題目 還是回文 時間限制 2000 ms 記憶體限制 65535 kb 難度 3 描述 判斷回文串很簡單,把字串變成回文串也不難。現在我們增加點難度,給出一串字元 全部是小寫字母 新增或刪除乙個字元,都會產生一定的花費。那麼,將字串變成回文串的最小花費是多少呢?輸入 多組資料 第乙個有兩個數n,m,...