分析:
這道題是乙個簡單區間的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,...