算法分析与设计 作业9
1. 问题
问题一.最长公共子序列问题,给定序列X=<x1,x2,……,xm>, Y=<y1,y2,……,yj>,求X和Y的最长公共子序列
问题二.背包问题。可以放入背包的物品有n种,物品j的重量和价值分别为wj,vj,j=1,2,…,n。如果背包的最大重量限度是b,如何选择放入背包
2. 解析
LCS:问题
Xi=<x1,x2,…,xi>
Yj=<y1,y2,…,yj>
Zk=<z1,z2,…,zk>
如果Zk是Xi和Yj的最长公共子序列
(1)xi = yj,那么zk = xi = yj,Zk-1是Xi-1和Yj-1的最长公共子序列
(2)xi ≠ yj,那么zk ≠ xi,Zk-1是Xi-1和Yj的最长公共子序列
(3)xi ≠ yj,那么zk ≠ yi,Zk-1是Xi和Yj-1的最长公共子序列
背包算法
3. 设计
4. 分析
LCS时间复杂度O(mn)
5. 源码
github源码地址:
https://github.com/erha66666/algorithm_1-/tree/main/lab9