用动态规划法解决最长公共子序列问题Word文档格式.docx
- 文档编号:21876834
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:7
- 大小:15.99KB
用动态规划法解决最长公共子序列问题Word文档格式.docx
《用动态规划法解决最长公共子序列问题Word文档格式.docx》由会员分享,可在线阅读,更多相关《用动态规划法解决最长公共子序列问题Word文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
intc[max][max];
for(i=1;
i<
=m;
i++)
c[i][0]=0;
}
=n;
c[O][i]=O;
for(j=1;
j<
j++)
if(x[i-1]==y[j-1])
{c[i][j]=c[i-1][j-1]+1;
k=i*(n+1)+j;
b[k]='
\\'
;
elseif(c[i-1][j]>
=c[i][j-1])
c[i][j]=c[i-1][j];
k=i*(n+1)+j;
b[k]='
|'
}else{c[i][j]=c[i][j-1];
k=i*(n+1)+j;
-'
voidLCS(inti,intj,char*x,char*b,intwidth){
if(i==0||j==0)
return;
intk=i*(width+1)+j;
if(b[k]=='
W){
LCS(i-1,j-1,x,b,width);
cout<
<
x[i]<
endl;
elseif(b[k]=='
)
LCS(i-1,j,x,b,width);
else
LCS(i,j-1,x,b,width);
voidmain()
charx[max]={'
a'
'
b'
c'
d'
};
chary[max]={'
intm=7;
intn=6;
charb[max]={0};
LCSLength(m,n,x,y,b);
LCS(m,n,x,b,n);
cout«
endl«
最长公共子序列冋题具有最优子结构性质
设
X={x1,...,xm}
Y={y1,…,yn}
及它们的最长子序列
Z={z1,...,zk}
则
1、若xm=yn,贝Vzk=xm=yn,且
Z[k-1]是X[m-1]和丫[n-1]的最长公共子序列
2、若xm!
=yn,
且zk!
=xm,则Z是X[m-1]和丫的最长公共子序列
3、若xm!
=yn,且zk!
=yn,则」Z是Y[n-1]和X的最长公共子序列
由性质导出子问题的递归结构当i=0,j=0时,c[i][j]=0当i,j>
0;
xi=yi时,c[i][j]=c[i-1][j-1]+1当i,j>
xi!
=yi时,c[i][j]=max{c[i][j-1],c[i-1][j]}#include<
iostream.h>
#definemax(a,b)a>
b?
a:
b
#defineM100
voiddisplay(int&
n,int&
C,intw[M],intv[M]){
inti;
cout<
"
请输入物品种数n:
cin>
>
n;
coutvv"
请输入背包总容量C:
cin>
>
C;
请输入各物品的大小或重量
w:
w[0]=0;
w[i];
请输入各物品其价值v:
endl;
v[0]=0;
v[i];
intknapsack(int&
n,int&
C,intw[M],int
v[M],intV[M][M])
inti,j;
for(i=0;
for(j=0;
=C;
if(i==0||j==0)
V[i][j]=0;
elseif(w[i]>
j)
V【i][j]=V【i-1][j];
elseif(w[i]<
=j)
V【i]【j]=max(V[i-1]【j],V【i-1]【j-w[i]]+v[i]);
returnV[n]【C];
};
voidtraceback(intn,intC,intw[M],intx[M],int
V[M][M])
for(inti=1;
if(V[i][C]==V[i-1][C])
x[i]=0;
x[i]=1;
C=C-w[i];
〃x[n]=(V[n][C]>
0)?
1:
0;
inti,j,n,C;
charch;
intw[M],v[M],x[M];
intV[M][M];
while⑴
display(n,C,w,v);
运算结果如下:
for(i=1;
i++)x[i]=0;
knapsack(n,C,w,v,V);
"
for(j=0;
j++)cout<
for(i=0;
{cout«
V[i][j]vv"
cout«
选择的物向量表示为
("
traceback(n,C,w,x,V);
i++)cout<
大价值
否则按任意键
)"
背包最为:
V[n][C]<
按Y或y继续操作,"
ch;
if(ch=='
Y'
||ch=='
y'
)continue;
break;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 规划 解决 最长 公共 序列 问题