P1435 回文字串(區間dp)

2021-09-26 09:43:45 字數 949 閱讀 9981

題目背景

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 求解 求的是什麼?想要使這個字串加入最少的字元變...