64,651
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
int dp[1001][1001];
string s;
getline(cin,s);
string t = s;
reverse(t.begin(), t.end());
int n = s.length(), m = t.length();
for (int i = 0; i<n; i++) {
for (int j = 0; j<m; j++) {
if (s[i] == t[j]) {
dp[i + 1][j + 1] = dp[i][j] + 1;
}
else {
dp[i + 1][j + 1] = max(dp[i][j + 1], dp[i + 1][j]);
}
}
}
printf("%d", dp[n][m]);
return 0;
}