constint MAXN = 2005; int n, dp[MAXN][MAXN]; char s[MAXN];
intmain(){ scanf("%s", s + 1); n = strlen(s + 1);
for (int i = 1; i <= n; ++i) dp[i][i] = 1; for (int len = 2; len <= n; ++len) { for (int i = 1; i + len - 1 <= n; ++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]); } }