輸入兩個字串a和b,合併成乙個串c,屬於a和b的字元在c中順序保持不變。如"abc"和"xyz"可以被組合成"axbycz"或"abxcyz"等。
我們定義字串的價值為其最長回文子串的長度(回文串表示從正反兩邊看完全一致的字串,如"aba"和"xyyx")。
需要求出所有可能的c中價值最大的字串,輸出這個最大價值即可
第一行乙個整數t(t ≤ 50)。接下來2t行,每兩行兩個字串分別代表a,b(|a|,|b| ≤ 50),a,b的字符集為全體小寫字母。
對於每組資料輸出一行乙個整數表示價值最大的c的價值。示例1
複製
2複製4aabb
aaaaabcaa
5
1#define _crt_secure_no_warnings
2 #include3 #include4 #include5 #include6
using
namespace
std;
7bool dp[55][55][55][55]; //
dp[i][j][k][l],i和j代表從i到j開始的字串,k和l代表從k到l開始的字串
8int
main()932
if(dp[i][j][k][l])
33 ans = max(ans, d1+d2);34}
35 printf("
%d\n
", ans);36}
37 }
合併回文子串
學習周記 時間限制 c c 2秒,其他語言4秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 輸入兩個字串a和b,合併成乙個串c,屬於a和b的字元在c中順序保持不變。如 abc 和 xyz 可以被組合成 axbycz 或 abxcyz 等...
合併回文子串 區間dp
題目描述 輸入兩個字串a和b,合併成乙個串c,屬於a和b的字元在c中順序保持不變。如 abc 和 xyz 可以被組合成 axbycz 或 abxcyz 等。我們定義字串的價值為其最長回文子串的長度 回文串表示從正反兩邊看完全一致的字串,如 aba 和 xyyx 需要求出所有可能的c中價值最大的字串,...
區間dp 合併回文子串
dp i j k p 表示a串的 i,j 和b串的 k,p 能否通過交叉且保持原有順序不變形成回文串。4維dp,先列舉長度,再列舉位置,狀態合法則貢獻答案。include using namespace std typedef long long ll 三年競賽一場空,不開long long見祖宗 ...