题解 | #最长回文子序列#
最长回文子序列
https://www.nowcoder.com/practice/82297b13eebe4a0981dbfa53dfb181fa
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int dp[1010][1010] = {0};
string s;
cin>>s;
int n = s.size();
for(int i=n-1;i>=0;i--)
{
dp[i][i] = 1;
for(int j=i+1;j<n;j++)
{
if(s[i]==s[j]) dp[i][j] = dp[i+1][j-1] + 2;
else dp[i][j] = max(dp[i][j-1],dp[i+1][j]);
}
}
cout<<dp[0][n-1]<<endl;
return 0;
}
// 64 位输出请用 printf("%lld")