目录
题目
解法一
题目
待添加
解法一
int max(int a, int b) {return a > b ? a : b;
}int longestPalindromeSubseq(char* s) {const int len = strlen(s);int dp[len];for (int i = len - 1; i >= 0; i--) {dp[i] = 1;int leftDown;if (i + 1 < len) {leftDown = dp[i + 1];dp[i + 1] = s[i] == s[i + 1] ? 2 : 1;}for (int j = i + 2; j < len; j++) {int tmp = dp[j];if (s[i] == s[j]) {dp[j] = leftDown + 2;} else {dp[j] = max(dp[j - 1], dp[j]);}leftDown = tmp;}}return dp[len - 1];
}