c_cpp 最长的对称子串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 最长的对称子串相关的知识,希望对你有一定的参考价值。
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int N;
const int MAX_N = 1e3 + 5;
string S;
int dp[MAX_N][MAX_N];
int main() {
getline(cin, S);
int len = S.size(), ans = 1;
memset(dp, 0, sizeof(dp));
// boundary
for (int i = 0; i < len; i++) {
dp[i][i] = 1;
if (i < len - 1) {
if (S[i] == S[i + 1]) {
dp[i][i + 1] = 1;
ans = 2;
}
}
}
// state transition equation
for (int l = 3; l <= len; l++) {
for (int i = 0; i + l - 1 < len; i++) {
int j = i + l - 1;
if (S[i] == S[j] && dp[i + 1][j - 1] == 1) {
dp[i][j] = 1;
ans = l;
}
}
}
cout << ans << endl;
return 0;
}
/*
Sample Input:
PATZJUJZTACCBCC
Sample Output:
9 (ATZJUJZTA)
*/
以上是关于c_cpp 最长的对称子串的主要内容,如果未能解决你的问题,请参考以下文章
L2-008. 最长对称子串
L2-008. 最长对称子串
L2-008 最长对称子串 (25分)
天梯杯 L2-008. 最长对称子串(马拉车算法应用)
L2-008 最长对称子串 (25 分) (模拟)
最长对称子串