动态规划问题描述
用动态规划法求两个字符串A=‘xzyzzyx’和B=‘zxyyzxz’的最长公共子序列
算法分析
(1)、若xm=yn,则zk=xm=yn,且Zk-1是Xm-1和Yn-1的最长公共自序列;
(2)、若xm≠yn,且zk≠xm,则Zk是Xm-1和Yn的最长公共自序列;
(3)、若xm≠yn,且zk≠yn,则Zk是Xm和Yn-1的最长公共自序列;
设L(m,n)表示序列X={x1,x2,…,xm}和Y={y1,y2,…,yn}的最长公共子序列的长度
L表示已经决策的长度
S表示每个决策的状态
L(0,0)=L(0,j)=0 1≤i≤m, 1≤j≤n
L(i-1,j-1)+1 xi=yi,i≥1,j≥1
L(i,j)=
max{L(i,j-1),(L(i-1,j)} xi≠yi,i≥1,j≥1
1 xi=yi
S(i,j)= 2 xi≠yi 且L(i,j-1)≥L(i-1,j)
3 xi≠yi 且L(i,j-1)< L(i-1,j)
长度矩阵L
源代码#include <iostream>
#include <string>
using namespace std;
int ...
附件列表