基本描述:参见教材P52。
输入:
输入第一行给出一个整数N(0<N<100)表示待测数据组数。接下来每组数据两行,分别为待测的两组字符串。每个字符串长度不大于1000.。输出每组测试数据输出一个整数,表示最长公共子序列长度。每组结果占一行。
样例输入:
2
asdf
adfsd
123abc
abc123abc
样例输出
3
6
额外要求:在输出最长公共子序列长度的基础上,设计算法,输出最优解:即还原出最长公共子序列。

同样利用动态规划的思想,利用两个变量I,j来分别记录两个字符串中的位置,如果当前位置的值相同,就取i-1,j-1位置的值加一,如果不相等就取i-1,j和I,j-1中更大的那个,并用t数组记录这三种情况中采取的是哪一种,在最后输出子序列的时候就根据t数组记录的情况反向输出即可。

代码如下:
#include<bits/stdc++.h>
using namespace std;
int dp[1005][1005];
int t[1005][1005];
string str1,str2;
void LCS()
{
for(int i=1;i<=str1.length();i++)
dp[i][0]=0;
for(int i=1;i<=str2.length();i++)
dp[0][i]=0;
for(int i=1;i<=str1.length();i++)
{
for(int j=1;j<=str2.length();j++)
{
if(str1[i]==str2[j])
{
dp[i][j]=dp[i-1][j-1]+1;
t[i][j]=1;
}
else if(dp[i-1][j]>=dp[i][j-1])
{
dp[i][j]=dp[i-1][j];
t[i][j]=2;
}
else
{
dp[i][j]=dp[i][j-1];
t[i][j]=3;
}

 }
}

}
void getLCS(int i,int j)
{
if(i0||j0)
return;
if(t[i][j]==1)
{
getLCS(i-1,j-1);
cout<<str1[i];
}
else if(t[i][j]==2)
{
getLCS(i-1,j);
}
else
getLCS(i,j-1);
}
int main()
{
int m;
cin>>m;
while(m–)
{
str1=" “;
str2=” “;
string str;
cin>>str;
str1+=str;
cin>>str;
str2+=str;
LCS();
printf(”%d\n",dp[str1.length()-1][str2.length()-1]);
getLCS(str1.length(),str2.length());
cout<<endl;
}
return 0;
}

计算机算法设计与分析 最长子序列相关推荐

  1. 计算机算法设计与分析(第5版)PDF

    <计算机算法设计与分析(第5版)>是2018年电子工业出版社出版的图书,作者是王晓东. 整本书的结构是:先介绍算法设计策略思想,然后从解决经典算法问题来学习,通过实践的方式去学习算法. 网 ...

  2. 计算机算法设计与分析第四版复习,计算机算法设计与分析(第4版)第1章.ppt

    <计算机算法设计与分析(第4版)第1章.ppt>由会员分享,可在线阅读,更多相关<计算机算法设计与分析(第4版)第1章.ppt(50页珍藏版)>请在人人文库网上搜索. 1.计算 ...

  3. 计算机算法设计与分析 动态规划 实验报告,动态规划法解最长公共子序列(计算机算法设计与分析实验报告).doc...

    动态规划法解最长公共子序列(计算机算法设计与分析实验报告) 实报 告 实验名称:任课教师::姓 名:完成日期:二.主要实验内容及要求: 要求按动态规划法原理求解问题: 要求交互输入两个序列数据: 要求 ...

  4. 计算机算法设计与分析考试题,《计算机算法设计与分析》习题及答案

    <计算机算法设计与分析>习题及答案 一.选择题 1.二分搜索算法是利用( A )实现的算法. A.分治策略 B.动态规划法 C.贪心法 D.回溯法 2.下列不是动态规划算法基本步骤的是( ...

  5. 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...

    中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...

  6. 计算机算法设计与分析教学大纲,《算法设计与分析》教学大纲

    <<算法设计与分析>教学大纲>由会员分享,可在线阅读,更多相关<<算法设计与分析>教学大纲(3页珍藏版)>请在人人文库网上搜索. 1.课程编号:&quo ...

  7. 国科大刘玉贵老师计算机算法设计与分析2021年期末考试题回顾

    总体感受 国科大研究生的计算机算法设计与分析课程有三位老师教授,分别是卜东波老师.陈玉福老师 和刘玉贵老师,这三位老师上课各有特色和风格.我选择的是刘玉贵老师的课程. 这门课程的内容挺充足的,但是有个 ...

  8. 计算机算法设计与分析第五章思维导图知识点总结 ( 初稿 )

    复习链接 计算机算法设计与分析第一章思维导图 计算机算法设计与分析第二章思维导图&&知识点总结 计算机算法设计与分析第三章思维导图&&知识点总结 计算机算法设计与分析第 ...

  9. 线性时间选择 python实现 计算机算法设计与分析

    最近算法老师布置了很多作业啊,其中一项就是要求实现书上<计算机算法设计与分析>28页的算法,实现过程如下:

最新文章

  1. 前端技术学习之选择器(一)
  2. JSON学习笔记-3
  3. 怎么将算法改成程序_多肉烂根怎么办?将土培改成水培,长势好,叶子变得更水灵...
  4. 【组合数学】指数型母函数 应用 ( 多重集排列问题 | 不同球放在不同盒子里 | 奇/偶数序列的指数生成函数推导 )
  5. python列表的嵌套_Python中关于列表嵌套列表的处理
  6. php新手最容易犯的错误,学习PHP过程中容易犯的一些错误
  7. python窗口化编程_python程序的窗口化
  8. 欧几里德投影(Euclidean projection)
  9. 在jenkins上配置Android项目(git管理,gradle构建)
  10. Linux网络编程 之 无连接和有连接通信(二)
  11. 【聊一聊】css中的经典布局——圣杯布局
  12. Maven实战 | dependencies与dependencyManagement
  13. 荣耀V40 Pro全新外观曝光:熟悉的矩阵镜头造型
  14. 仿百度,豆瓣读书文库阅读器
  15. 电脑不识别移动硬盘怎么办_U盘插入电脑后不识别无法读取的解决方法
  16. vue 常用框架【饿了么框架】
  17. 修改docker时区为北京时间
  18. 网站html漂浮代码大全,网页漂浮窗口代码
  19. Windows 10 Insider Preview 预览版本19603发布
  20. Error C2065 'cout': undeclared identifier

热门文章

  1. Android商城开发系列(十)—— 首页活动广告布局实现
  2. spring-cloud 学习四 服务网关
  3. 禁用select下拉方法
  4. Copy(定义,特点,深复制,浅复制)(非ARC,ARC的运用范围)
  5. 移动自动化测试:appium的用法 (appium usage)
  6. 下载android平台源码
  7. 庆祝ColdFusion十周年
  8. 说一下php的自动加载,php的_autoload函数实现自动加载类的使用
  9. phpnow 更改mysql data文件夹路径
  10. PAT 1086 就不告诉你