首页 算法设计-最长公共子序列动态规划算法

算法设计-最长公共子序列动态规划算法

举报
开通vip

算法设计-最长公共子序列动态规划算法算法设计-最长公共子序列动态规划算法 算法设计与分析实验报告 姓名,XXX 班级,XXX 学号,XXX 一、实验名称,最长公共子序列suanfa 时间,2012年3月14日,星期三,第四节 地点,12#311 二、实验目的及要求 最长公共子序列问题,给定两个序列X={x,x …x}和12,mY={y,y, …y} ,找出X和Y的最长公共子序列。 12n 动态规划算法可有效的解此问题。下面按照鼎泰规划算法设计步骤来设计界此问题的有效算法。 三、实验环境 VC++ 四、实验内容 出键盘上输入两...

算法设计-最长公共子序列动态规划算法
算法设计-最长公共子序列动态规划算法 算法设计与分析实验报告 姓名,XXX 班级,XXX 学号,XXX 一、实验名称,最长公共子序列suanfa 时间,2012年3月14日,星期三,第四节 地点,12#311 二、实验目的及要求 最长公共子序列问题,给定两个序列X={x,x …x}和12,mY={y,y, …y} ,找出X和Y的最长公共子序列。 12n 动态规划算法可有效的解此问题。下面按照鼎泰规划算法设计步骤来设计界此问题的有效算法。 三、实验环境 VC++ 四、实验内容 出键盘上输入两个字符序列,输出最长公共子序列及其数目。 五、算法描述及实验步骤 设序列x=和y=的一个最长公共子序列z=,则, 1. 若xm=yn,则zk=xm=yn且zk-1是xm-1和yn-1的最长公共子序列, 2. 若xm?yn且zk?xm ,则z是xm-1和y的最长公共子序列, 3. 若xm?yn且zk?yn ,则Z是X和Yn-1的最长公共子序列。 六、调试过程及实验结果 void gong_tong(st &a,st &b,sz d[][X]){ int i,j; for(i=0;i<=a.length;i++)d[i][0].c=0; for(i=0;i<=b.length;i++)d[0][i].c=0; for(i=1;i<=a.length;i++){ for(j=1;j<=b.length;j++){ if(a.elem[i-1]==b.elem[j-1]) { d[i][j].c=d[i-1][j-1].c+1; strcpy(d[i][j].a,d[i-1][j-1].a); d[i][j].a[d[i][j].c-1]=b.elem[j-1]; } else if(d[i-1][j].c>=d[i][j-1].c) { d[i][j].c=d[i-1][j].c; strcpy(d[i][j].a,d[i-1][j].a); } else { d[i][j].c=d[i][j-1].c; strcpy(d[i][j].a,d[i][j-1].a); } } } printf("最长公共子序列有%d\n",d[a.length][b.length].c); printf("最长公共子序列是,"); for(i=0;i<=d[a.length][b.length].c;i++) printf("%c",d[a.length][b.length].a[i]); } 七、 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 要好好的理解动态规划算法思想,好好的掌握此思想。 八、附录,源程序清单, #include #include #include #define X 200 #define OVERFLOW -2 int ji_shu(char *a){ int i; for(i=0;i<=100;i++){ if(a[i]=='\0') break; else ; } return i; } typedef struct{ char *elem; int length; int listsize; }st; typedef struct{ char a[X]; int c; }sz; void get_char(st &x){ x.elem=(char *)malloc(X*sizeof(char)); if(!x.elem) exit(OVERFLOW); x.listsize=X; gets(x.elem); x.length=ji_shu(x.elem); } void get_room(st &d){ d.elem=(char *)malloc(X*sizeof(char)); if(!d.elem) exit(OVERFLOW); d.listsize=X; d.length=0; } void printf_char(st &x){ int i; for(i=0;i=d[i][j-1].c) { d[i][j].c=d[i-1][j].c; strcpy(d[i][j].a,d[i-1][j].a); } else { d[i][j].c=d[i][j-1].c; strcpy(d[i][j].a,d[i][j-1].a); } } } printf("最长公共子序列有%d\n",d[a.length][b.length].c); printf("最长公共子序列是,"); for(i=0;i<=d[a.length][b.length].c;i++) printf("%c",d[a.length][b.length].a[i]); } void main(){ st x,y; static sz d[X][X]; printf("请输入第一个字母串X,"); get_char(x); printf("%d\n",x.length); printf("请输入第二个字母串Y,"); get_char(y); printf("%d\n",y.length); gong_tong(x,y,d); }
本文档为【算法设计-最长公共子序列动态规划算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_954223
暂无简介~
格式:doc
大小:27KB
软件:Word
页数:6
分类:互联网
上传时间:2017-10-08
浏览量:36