dp专题 第四题 最长公共子序列
来源:互联网 发布:电子科技大学软件学院 编辑:程序博客网 时间:2024/05/19 07:41
1、简单描述
多次测试输入,输入两个字符串,编号是上升序列,查找他们最长公共子序列的长度。
2、思路
# include <bits/stdc++.h>
using namespace std;
int main()
{
string s1,s2;
while(cin>>s1>>s2)
{
int arr[1001][1001];
memset(arr,0,sizeof arr);
for(int i=1;i<=s1.size();i++)
{
for(int j=1;j<=s2.size();j++)
{
if(s1[i-1]==s2[j-1])
{
arr[i][j]=arr[i-1][j-1]+1;
}
else
{
arr[i][j]=max(arr[i][j-1],arr[i-1][j]);
}
}
}
cout<<arr[s1.size()][s2.size()]<<endl;
}
return 0;
}
1、寻找子问题 arr二维数组前i个元素,前j个元素查找最长公共子列
2、定义状态 每个状态结果与i、j有关,用二维数组描述状态,将子问题转化为只考虑前i个元素和前j个元素的决策。
3、找状态转移方程
如果s1第i个元素与s2第j个元素相同,结果为arr【i-1】【j-1】+1;
如果不相同,相当于s1第i个元素或者s2第j个元素不起作用,结果为arr【i-1】【j】和arr【i】【j-1】中较大的值。
4、自下向上寻求最优解。
- dp专题 第四题 最长公共子序列
- dp专题:最长公共子序列
- dp专题 第八题 最长公共子上升序列
- 第四题 最长公共子序列
- 最长公共子序列--DP
- DP---最长公共子序列
- 最长公共子序列dp
- DP 最长公共子序列
- DP 最长公共子序列
- 最长公共子序列-DP
- 【DP】最长公共子序列。
- 最长公共子序列 DP
- DP--最长公共子序列
- dp最长公共子序列
- dp 最长公共子序列
- DP最长公共子序列
- 最长公共子序列-dp
- dp--最长公共子序列
- 有多个broker的例子
- 睡眠排序
- 思维修炼之逻辑学概述
- BZOJ 2298: [HAOI2011]problem a
- BaseDao工具类
- dp专题 第四题 最长公共子序列
- LeetCode 237 Delete Node in a Linked List(技巧)
- React Native布局之FlexBox
- php学习路线图
- 多通道接收机幅相校准测试系统的设计
- 1
- android5.1.1 获取当前移动信号强度
- strcat()的实现
- GitHub上最火的Android开源项目,所有开源项目都有详细资料和配套视频