解题步骤:
参考代码:
- class Solution {
- public:
- int longestPalindromeSubseq(string s) {
- int n=s.size();
- vector
int>> dp(n,vector<int>(n)); -
- //记得从下往上填表
- for(int i=n-1;i>=0;i--)
- {
- //记得i是小于等于j的
- for(int j=i;j
- {
- //状态转移方程
- if(s[i]!=s[j])
- {
- dp[i][j]=max(dp[i+1][j],dp[i][j-1]);
- }
- else
- {
- if(i==j)
- {
- dp[i][j]=1;
- }
- else if(i+1==j)
- {
- dp[i][j]=2;
- }
- else
- {
- dp[i][j]=dp[i+1][j-1]+2;
- }
- }
- }
- }
- //返回值
- return dp[0][n-1];
- }
- };
你学会了吗???