Given two string X, Y and an integer k. Now the task is to convert string X with minimum cost such that the Longest Common Subsequence of X and Y after conversion is of length k. The cost of conversion is calculated as XOR of old character value and new character value. Character value of ‘a’ is 0, ‘b’ is 1 and so on.
Input : X = "abble", Y = "pie", k = 2 Output : 25 If you changed 'a' to 'z', it will cost 0 XOR 25.
The problem can be solved by slight change in Dynamic Programming problem of Longest Increasing Subsequence. Instead of two states, we maintain three states.
Note, that if k > min(n, m) then it’s impossible to attain LCS of atleast k length, else it’s always possible.
Let dp[i][j][p] stores the minimum cost to achieve LCS of length p in x[0…i] and y[0….j].
With base step as dp[i][j] = 0 because we can achieve LCS of 0 legth without any cost and for i < 0 or j 0 in such case).
Else there are 3 cases:
1. Convert x[i] to y[j].
2. Skip ith character from x.
3. Skip jth character from y.
If we convert x[i] to y[j], then cost = f(x[i]) XOR f(y[j]) will be added and LCS will decrease by 1. f(x) will return the character value of x.
Note that the minimum cost to convert a charcater ‘a’ to any character ‘c’ is always f(a) XOR f(c) because f(a) XOR f(c) <= (f(a) XOR f(b) + f(b) XOR f(c)) for all a, b, c.
If you skip ith character from x then i will be decreased by 1, no cost will be added and LCS will remain the same.
If you skip jth character from x then j will be decreased by 1, no cost will be added and LCS will remain the same.
dp[i][j][k] = min(cost + dp[i - 1][j - 1][k - 1], dp[i - 1][j][k], dp[i][j - 1][k]) The minimum cost to make the length of their LCS atleast k is dp[n - 1][m - 1][k]
- Edit distance and LCS (Longest Common Subsequence)
- Number of ordered pairs such that (Ai & Aj) = 0
- Largest divisible pairs subset
- Minimum cost to make two strings identical by deleting the digits
- Longest Common Subsequence with at most k changes allowed
- Find the Longest Increasing Subsequence in Circular manner
- Friends Pairing Problem
- Minimum sum subsequence such that at least one of every four consecutive elements is picked
- Sum of average of all subsets
- Minimum Cost To Make Two Strings Identical
- Find if string is K-Palindrome or not | Set 1
- Minimum time to finish tasks without skipping two consecutive
- Find the minimum cost to reach destination using a train
- Longest Common Subsequence | DP-4
- Longest Increasing Subsequence | DP-3
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.