class Solution {
public:
int countSubstrings(string s) {
vector <vector<bool>> dp(s.size(),vector<bool>(s.size(),false));
int result=0;
for(int i=s.size()-1;i>=0;i--){
for(int j=i;j<s.size();j++){
if(s[i]==s[j]){
if(j-i<=1){
result++;
dp[i][j]=true;
}
else {
if(dp[i+1][j-1]==true){
result++;
dp[i][j]=true;
}
}
}
}
}
return result;
}
};
那么其实你还是要注意==和=的区别 一个是等 一个是赋值
class Solution {
public:
int longestPalindromeSubseq(string s) {
int result;
vector<vector<int>> dp(s.size(),vector<int>(s.size(),0));
for(int i=0;i<s.size();i++){
dp[i][i]=1;
}
for(int i=s.size()-1;i>=0;i--){
for(int j=i+1;j<s.size();j++){
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]);
}
}
}
return dp[0][s.size() - 1];
}
};
这个动态规划确实绷不住了 确实难 唉 只能说很不容易