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 分) (模拟)

最长对称子串