许诺 • 11天前
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main() {
int N;
string s;
cin >> N >> s;
vector<vector<int>> dp(N, vector<int>(N, 0));
for (int i = 0; i < N; ++i) {
dp[i][i] = 1;
}
for (int len = 2; len <= N; ++len) {
for (int i = 0; i <= N - len; ++i) {
int j = i + len - 1;
if (s[i] == s[j]) {
dp[i][j] = dp[i+1][j-1] + 2;
} else {
dp[i][j] = max(dp[i+1][j], dp[i][j-1]);
}
}
}
int lps_length = dp[0][N-1];
int min_insertions = N - lps_length;
cout << min_insertions << endl;
return 0;
}
评论:
请先登录,才能进行评论