題目背景
ioi2000第一題
題目描述
回文詞是一種對稱的字串。任意給定乙個字串,通過插入若干字元,都可以變成回文詞。此題的任務是,求出將給定字串變成回文詞所需要插入的最少字元數。
比如 「ab3bd」插入2個字元後可以變成回文詞「dab3bad」或「adb3bda」,但是插入少於2個的字元無法變成回文詞。
注:此問題區分大小寫
輸入格式
乙個字串(0輸出格式
有且只有乙個整數,即最少插入字元數
輸入輸出樣例
輸入 #1 複製
ab3bd
輸出 #1 複製
20913:又回顧了一下以前的幾道dp,覺得dp的關鍵就在於狀態表示,好的狀態表示事半功倍。本題只要搞出了二維dp的狀態定義,再找出問題的邊界,那麼區間遞推就自然而然了。
思路:區間dp,2個的情況為1/0,1個的情況為0,其他的情況由此轉移過來
#include
#include
#include
#include
#include
#include
using
namespace std;
#define inf 0x3f3f3f3f
const
int maxn =
1e3+7;
char s[maxn]
;int dp[maxn]
[maxn]
;//dp[i][j],i到j變成回文串需要加多少字元
intmain()
for(
int l =
2; l <= n;l++)}
printf
("%d\n"
,dp[1]
[n])
;return0;
}
P1435 回文字串
回文詞是一種對稱的字串。任意給定乙個字串,通過插入若干字元,都可以變成回文詞。此題的任務是,求出將給定字串變成回文詞所需要插入的最少字元數。比如 ab3bd 插入2個字元後可以變成回文詞 dab3bad 或 adb3bda 但是插入少於2個的字元無法變成回文詞。注 此問題區分大小寫 輸入格式 乙個字...
HIHO1323 回文字串(區間dp)
思路 區間dp,按照區間長度列舉所有區間和區間的起始位置。這時也可獲取到區間的末位,比對這兩個字元是否相同,如果相同可以更新dp i,j max dp i 1,j 1 dp i,j 否則,更新三種操作 dp i,j min dp i 1,j dp i,j 1 dp i 1,j 1 1 1 2 eye...
Luogu P1435 回文字串 解題報告
主要大衣大意 給定乙個字串,求至少加入多少個字元才能使字串變成回文字串 下面就是我一本正經的胡說八道題解 很顯然,這應該是一道典型的最長公共子串行的題目 因此,主要思想就是dp 方程式也挺好推的 於是我們就來講一下為什麼這題能用最長公共子串行 lcs 求解 求的是什麼?想要使這個字串加入最少的字元變...