NYOJ 37 回文字串

2022-03-06 04:14:28 字數 1040 閱讀 4864

時間限制:3000 ms  |  記憶體限制:65535 kb

難度:4

描述

所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如"aba"。當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字串。

輸入

第一行給出整數n(0

輸出

每行輸出所需新增的最少字元數

樣例輸入

1

ab3bd

樣例輸出

2
**ioi 2000

上傳者

hzyqazasdf

解題:很狠狠狠經典的dp題目啊。。。。叫什麼來著?最長公共子串行。。。。。長度-最長公共子串行就是我們要的結果啊。。。。

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9

#define ll long long

10using

namespace

std;

11char a[1100],b[1100

];12

int dp[2][1100

];13

intmain()else dp[i%2][j] = max(dp[(i-1)%2][j],dp[i%2][j-1

]);28}29

}30 printf("

%d\n

",len-dp[(i-1)%2][j-1

]);31}32

return0;

33 }

view code

NYOJ 37 回文字串

思想 在紙上測試幾組資料,發現先逆轉原來的字串,再用原來的字串跟逆轉後的字串進行比較,求得的最長公共子串行就是回文串,也就是不需要新增的,再用總長度減去最長公共子串行就可以得到最少需要新增的字元數。就簡單了,以前寫過的稍稍改下就直接貼上來了。include includeint f 1001 100...

nyoj 37 回文字串

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如 aba 當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文...

nyoj 37 回文字串

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如 aba 當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文...