计算机算法设计与分析 最长子序列
基本描述:参见教材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;
}
计算机算法设计与分析 最长子序列相关推荐
- 计算机算法设计与分析(第5版)PDF
<计算机算法设计与分析(第5版)>是2018年电子工业出版社出版的图书,作者是王晓东. 整本书的结构是:先介绍算法设计策略思想,然后从解决经典算法问题来学习,通过实践的方式去学习算法. 网 ...
- 计算机算法设计与分析第四版复习,计算机算法设计与分析(第4版)第1章.ppt
<计算机算法设计与分析(第4版)第1章.ppt>由会员分享,可在线阅读,更多相关<计算机算法设计与分析(第4版)第1章.ppt(50页珍藏版)>请在人人文库网上搜索. 1.计算 ...
- 计算机算法设计与分析 动态规划 实验报告,动态规划法解最长公共子序列(计算机算法设计与分析实验报告).doc...
动态规划法解最长公共子序列(计算机算法设计与分析实验报告) 实报 告 实验名称:任课教师::姓 名:完成日期:二.主要实验内容及要求: 要求按动态规划法原理求解问题: 要求交互输入两个序列数据: 要求 ...
- 计算机算法设计与分析考试题,《计算机算法设计与分析》习题及答案
<计算机算法设计与分析>习题及答案 一.选择题 1.二分搜索算法是利用( A )实现的算法. A.分治策略 B.动态规划法 C.贪心法 D.回溯法 2.下列不是动态规划算法基本步骤的是( ...
- 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...
中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...
- 计算机算法设计与分析教学大纲,《算法设计与分析》教学大纲
<<算法设计与分析>教学大纲>由会员分享,可在线阅读,更多相关<<算法设计与分析>教学大纲(3页珍藏版)>请在人人文库网上搜索. 1.课程编号:&quo ...
- 国科大刘玉贵老师计算机算法设计与分析2021年期末考试题回顾
总体感受 国科大研究生的计算机算法设计与分析课程有三位老师教授,分别是卜东波老师.陈玉福老师 和刘玉贵老师,这三位老师上课各有特色和风格.我选择的是刘玉贵老师的课程. 这门课程的内容挺充足的,但是有个 ...
- 计算机算法设计与分析第五章思维导图知识点总结 ( 初稿 )
复习链接 计算机算法设计与分析第一章思维导图 计算机算法设计与分析第二章思维导图&&知识点总结 计算机算法设计与分析第三章思维导图&&知识点总结 计算机算法设计与分析第 ...
- 线性时间选择 python实现 计算机算法设计与分析
最近算法老师布置了很多作业啊,其中一项就是要求实现书上<计算机算法设计与分析>28页的算法,实现过程如下:
最新文章
- 前端技术学习之选择器(一)
- JSON学习笔记-3
- 怎么将算法改成程序_多肉烂根怎么办?将土培改成水培,长势好,叶子变得更水灵...
- 【组合数学】指数型母函数 应用 ( 多重集排列问题 | 不同球放在不同盒子里 | 奇/偶数序列的指数生成函数推导 )
- python列表的嵌套_Python中关于列表嵌套列表的处理
- php新手最容易犯的错误,学习PHP过程中容易犯的一些错误
- python窗口化编程_python程序的窗口化
- 欧几里德投影(Euclidean projection)
- 在jenkins上配置Android项目(git管理,gradle构建)
- Linux网络编程 之 无连接和有连接通信(二)
- 【聊一聊】css中的经典布局——圣杯布局
- Maven实战 | dependencies与dependencyManagement
- 荣耀V40 Pro全新外观曝光:熟悉的矩阵镜头造型
- 仿百度,豆瓣读书文库阅读器
- 电脑不识别移动硬盘怎么办_U盘插入电脑后不识别无法读取的解决方法
- vue 常用框架【饿了么框架】
- 修改docker时区为北京时间
- 网站html漂浮代码大全,网页漂浮窗口代码
- Windows 10 Insider Preview 预览版本19603发布
- Error C2065 'cout': undeclared identifier