Given a string S of length n and a positive integer k. The task is to find number of Palindromic Subsequences of length k.
Examples:
Input : s = "aabab", k = 2
Output : 4
Input : s = "aaa", k = 3
Output : 1
Input: s= "abdbcabda",k=4
Output : 6
| # | User | Rating |
|---|---|---|
| 1 | jiangly | 3810 |
| 2 | Benq | 3676 |
| 3 | Kevin114514 | 3655 |
| 4 | maroonrk | 3463 |
| 5 | strapple | 3447 |
| 6 | Um_nik | 3387 |
| 7 | heuristica | 3322 |
| 8 | turmax | 3317 |
| 9 | tourist | 3307 |
| 10 | jiangbowen | 3291 |
| # | User | Contrib. |
|---|---|---|
| 1 | Qingyu | 156 |
| 2 | nik_exists | 150 |
| 2 | maspy | 150 |
| 4 | Um_nik | 141 |
| 5 | Errichto | 139 |
| 6 | adamant | 137 |
| 7 | AmShZ | 136 |
| 8 | BledDest | 132 |
| 9 | maroonrk | 131 |
| 10 | qwexd | 129 |
Given a string S of length n and a positive integer k. The task is to find number of Palindromic Subsequences of length k.
Examples:
Input : s = "aabab", k = 2
Output : 4
Input : s = "aaa", k = 3
Output : 1
Input: s= "abdbcabda",k=4
Output : 6
| Name |
|---|



dp[i][j][k] = (s[i] == s[j]) * dp[i + 1][j — 1][k — 1] + dp[i + 1][j][k] + dp[i][j — 1][k] — dp[i + 1][j — 1][k]
thanks a lot.What would be its time complexity O(n*k)?
O(n*n*k)
Wouldn't it be: "dp[i][j][k] = (s[i] == s[j]) * dp[i + 1][j — 1][k — 2] + dp[i + 1][j][k] + dp[i][j — 1][k] — dp[i + 1][j — 1][k]"?
This is the correct relation imo.
Let me explain it further.
dp[i][j][k]means the number of palindromic subsequences of size k that occur between i and j (inclusive)So if
s[i]==s[j], this would mean that the corner elements are same at theithand thejthindex, so we multiply it withdp[i+1][j-1][k-2](this means that we excludeithandjthindex and find the number of palindromic subsequences of sizek-2fromi+1toj-1indices).Again we add
dp[i][j-1][k]anddp[i+1][j][k]and subtractdp[i+1][j-1][k]from it which is self explanatory.Number of palindromic subsequences of size 1 between
i&jwill bej-i+1( as all strings of size 1 are palindrome) Number of palindromic subsequences of size 0 betweeni&jwill be 1 Number of palindromic subsequences of size 2 wheni+1==jandithand jth character are equal will be 1 else it will be 0Can you also tell why to subtract dp[i+1][j-1][k] ? Is it because when we fo to i+1,j and i,j-1 we will double count it i+1,j-1 so to cancel it we are subtracting?
https://ideone.com/g8Xu15