資源簡介
若給定序列X={x1,x2,…,xm},則另一序列Z={z1,z2,…,zk},是X的子序列是指存在一個嚴格遞增下標序列{i1,i2,…,ik}使得對于所有j=1,2,…,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相應的遞增下標序列為{2,3,5,7}。
給定2個序列X和Y,當另一序列Z既是X的子序列又是Y的子序列時,稱Z是序列X和Y的公共子序列。
給定2個序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最長公共子序列
代碼片段和文件信息
#include
#include
using?namespace?std;
string?xy;//xy用來存放字符序列
int?**c**bmn;
/*m,n分別存儲字符串xy的長度數組c[i][j]存儲Xi和Yj得最長公共子序列的長度,
b[i][j]記錄c[i][j]的值是有哪一個子問題的解得到的*/
void?LCSLength(int?mint?nstring?xstring?yint?**cint**b);
void?LCS(int?iint?jstring?xint?**b);
void?Initialize();//對數組bc動態分配空間以及對其進行初始化
void?ReadCommand(char?&cmd);
void?Interpret(char?&cmd);
void?Realese();//釋放指針
void?Display();
int?main()
{
char?cmd;
do
{
ReadCommand(cmd);
Interpret(cmd);
}while(cmd!=‘q‘&&cmd!=‘Q‘);
return?0;
}
void?ReadCommand(char?&cmd)
{
system(“cls“);???//清屏
cout<<“\n--------------------------------------------------------------------------\n“;
cout<<“\n\t\t\t\t操??作??提??示“;
cout<<“\n-----------------------------------------------
評論
共有 條評論