《算法分析与设计》作业9----最长公共子序列LCS

目录

1.问题

2.解析

3.设计

4.分析

5.源码


 

1.问题

《算法分析与设计》作业9----最长公共子序列LCS

2.解析

《算法分析与设计》作业9----最长公共子序列LCS

《算法分析与设计》作业9----最长公共子序列LCS

举例如下:

《算法分析与设计》作业9----最长公共子序列LCS《算法分析与设计》作业9----最长公共子序列LCS

《算法分析与设计》作业9----最长公共子序列LCS

《算法分析与设计》作业9----最长公共子序列LCS

3.设计

3.1算法

《算法分析与设计》作业9----最长公共子序列LCS

3.2实例

明天完善

X=<A,B,C,B,D,A,B>  m=7  

Y=<B,D,C,A,,B,A>    n=6  

C初始化

i                     j

0

1

2

3

4

5

6

0

0

0

0

0

0

0

0

1

0

 

 

 

 

 

 

2

0

 

 

 

 

 

 

3

0

 

 

 

 

 

 

4

0

 

 

 

 

 

 

5

0

 

 

 

 

 

 

6

0

 

 

 

 

 

 

7

0

 

 

 

 

 

 

算法1:

(1)i=1  X.A

j=1  ≠B  C[1,1]=max(C[1,0],C[0,1])=max(0,0)=0  删除y

j=2  ≠D  C[1,2]=max(C[1,1],C[0,2])=max(0,0)=0  删除y

j=3  ≠C  C[1,3]=max(C[1,2],C[0,3])=max(0,0)=0  删除y

j=4  =A   C[1,4]=C[0,3]+1=1  删除两个

j=5  ≠B  C[1,5]=max(C[1,4],C[0,5])=max(1,0)=1  删除y

j=6  =A   C[1,6]=C[0,5]+1=1  删除两个

(2)i=2  X.B

j=1  =B   C[2,1]=C[1,0]+1=1  删除两个

j=2  ≠D  C[2,2]=max(C[2,1],C[1,2])=max(1,0)=1  删除y

j=3  ≠C  C[2,3]=max(C[1,2],C[0,3])=max(0,0)=0  删除y

j=4  ≠A  C[2,4]=C[0,3]+1=1  删除两个

j=5  =B   C[2,5]=max(C[1,4],C[0,5])=max(1,0)=1  删除y

j=6  ≠A  C[2,6]=C[0,5]+1=1  删除两个

(3)i=3

 

(4)i=4

 

(5)i=5

 

(6)i=6

 

(7)i=7

0 0 0 0 0 0 0

0 0 0 0 1 1 1

0 1 1 1 1 2 2

0 1 1 2 2 2 2

0 1 1 2 2 3 3

0 1 2 2 2 3 3

0 1 2 2 3 3 4

0 1 2 2 3 4 4

4.分析

两重循环,故时间复杂度为O(mn)

5.源码

GitHub地址