#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll dp[5001][5001];
int main() {
string s;
cin >> s;
int n = s.size();
int res = 0;
for (int len = 2;len <= n;len++) {
for (int l = 0;l+len-1 < n;l++) {
int r = l + len - 1;
if (s[l] > s[r])dp[l][r] = 1;
else if (s[l] == s[r])dp[l][r] = dp[l + 1][r - 1];
else dp[l][r] = 0;
res += dp[l][r];
}
}
cout << res;
}
区间dp的基础
于 2025-06-09 09:06:23 首次发布