收藏 分销(赏)

最长公共子序列.doc

上传人:a199****6536 文档编号:1989011 上传时间:2024-05-13 格式:DOC 页数:6 大小:20.20KB 下载积分:6 金币
下载 相关 举报
最长公共子序列.doc_第1页
第1页 / 共6页
最长公共子序列.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
动 态 规 划 一、 问题描述 用动态规划法求两个字符串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) x z y z z y x 0 0 0 0 0 0 0 0 z 0 0 1 1 1 1 1 1 x 0 1 1 1 1 2 2 2 y 0 1 1 2 2 2 2 2 y 0 1 1 2 2 3 3 3 z 0 1 1 2 2 3 3 4 x 0 1 1 2 3 3 3 4 z 0 1 2 2 3 3 4 4 长度矩阵L 三、 源代码 #include <iostream> #include <string> using namespace std; int main() { string str1 = "xzyzzyx"; string str2 = "zxyyzxz"; int x_len = str1.length(); int y_len = str2.length(); int arr[50][50] ={{0,0}}; int i = 0; int j = 0; for(i = 1; i <= x_len; i++) { for(j = 1; j <= y_len; j++) { if(str1[i - 1] == str2[j - 1]) { arr[i][j] = arr[i - 1][j - 1] + 1; } else if(arr[i][j - 1] >= arr[i - 1][j]) arr[i][j] = arr[i][j - 1]; else arr[i][j] = arr[i -1][j]; } } for(i = 0 ; i <= x_len; i++) { for( j = 0; j <= y_len; j++) { cout << arr[i][j] << " "; } cout << endl; } for(i = x_len, j = y_len; i >= 1 && j >= 1;) { if(str1[i - 1] == str2[j - 1]) { cout << str1[i - 1] << " "; i--; j--; } else if(arr[i][j -1] > arr[i - 1][j]) j--; else i--; } cout << endl; return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服