#include<bits/stdc++.h> using namespace std; int lps(char *); int main() { char str[] = "abcdeRTONUedcba"; int lps_len = lps(str); printf ("Length of Longest palindromic subsequence is: %d\n", lps_len); return 0; } int lps(char *str) { int n = strlen(str); int i, j, cl; int L[n][n]; // Strings of length 1 are palindrome of length 1 for(i = 0; i < n; i++) L[i][i] = 1; for(cl=2; cl<=n; cl++) { for(i=0; i<n-cl+1; i++) { j = i+cl-1; if (str[i] == str[j] && cl == 2) L[i][j] = 2; else if (str[i] == str[j]) L[i][j] = L[i+1][j-1] + 2; else L[i][j] = max(L[i][j-1], L[i+1][j]); } } return L[0][n-1]; }