Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

I have a code that is supposed to find the longest common subsequence between two sequences X and Y. **With the condition that the elements

I have a code that is supposed to find the longest common subsequence between two sequences X and Y.
**With the condition that the elements must be consecutive in both X and Y.
ex:
X = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
Y = { 13, 15, 18, 1, 3, 5, 8, 10, 12, 20}
the answer should be S = { 8, 10, 12}
but mu code outputs S = { 8, 10, 12, 20} which is wrong because 20 in not consecutive in X and Y.
What do I have to change in order for it to only count consecutive elements?
My code:

import java.util.Scanner;

public class LCS {

public static void main(String[] args) {

System.out.println();

Scanner input = new Scanner(System.in);

// Taking the elemest and length of X and Y from user

System.out.print("Enter the length of the sequences X and Y: ");

int n = input.nextInt();

int[] X = new int[n];

int[] Y = new int[n];

System.out.print(" Enter the elements of sequence X: ");

for (int i = 0; i

X[i] = input.nextInt();

}

System.out.print(" Enter the elements of sequence Y: ");

for (int i = 0; i

Y[i] = input.nextInt();

}

input.close();

// Printing X and Y

System.out.println();

System.out.print("X = {");

for (int i = 0; i

System.out.print(X[i]);

if (i != n - 1) {

System.out.print(", ");

}

}

System.out.print("}");

System.out.println();

System.out.print("Y = {");

for (int j = 0; j

System.out.print(Y[j]);

if (j != n - 1) {

System.out.print(", ");

}

}

System.out.print("}");

// Finding the LCS

int[][] lcs = new int[n + 1][n + 1];

for (int i = 1; i

for (int j = 1; j

if (X[i - 1] == Y[j - 1]) {

lcs[i][j] = lcs[i - 1][j - 1] + 1;

} else {

lcs[i][j] = Math.max(lcs[i - 1][j], lcs[i][j - 1]);

}

}

}

// Getting the length of LCS

int length = lcs[n][n];

// Getting the LCS elements

int[] S = new int[length];

int i = n;

int j = n;

int k = length - 1;

while (i > 0 && j > 0) {

if (X[i - 1] == Y[j - 1]) {

S[k--] = X[i - 1];

i--;

j--;

} else if (lcs[i - 1][j] > lcs[i][j - 1]) {

i--;

} else {

j--;

}

}

// Printing the LCS elements

System.out.println(" ");

System.out.print("Longest common subsequence is S = {");

for (int m = 0; m

System.out.print(S[m]);

if (m != length - 1) {

System.out.print(", ");

}

}

System.out.print("}");

// Printing the length of LCS

System.out.print("with length " + length);

System.out.println(" n = " + length);

// Finding the starting index in X and Y

int startIndexX = -1;

int startIndexY = -1;

for (i = 0; i

if (X[i] == S[0]) {

startIndexX = i;

break;

}

}

for (j = 0; j

if (Y[j] == S[0]) {

startIndexY = j;

break;

}

}

// Printing the start index of X and Y

System.out.println("i = " + startIndexX);

System.out.println("j = " + startIndexY);

System.out.println();

}

}

image text in transcribed
X={2,4,6,8,10,12,14,16,18,20}Y={13,15,18,1,3,5,8,10,12,20}LongestcommonsubsequenceisS={8,10,12,20}withlength4n=4i=3j=6

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Concepts of Database Management

Authors: Philip J. Pratt, Joseph J. Adamski

7th edition

978-1111825911, 1111825912, 978-1133684374, 1133684378, 978-111182591

More Books

Students also viewed these Databases questions

Question

Do you want your own family someday?

Answered: 1 week ago