最长公共子序列(不需要连续)
来源:互联网 发布:osi网络七层协议 编辑:程序博客网 时间:2024/04/30 13:04
#include <iostream>
#include <stdio.h>
#include <string.h>
#define maxn 10000 + 10
using namespace std;
int dp[maxn][300];
int main()
{
char str1[100];
char str2[100];
while(scanf("%s%s",str1 +1, str2 + 1))
{
int len1 = strlen(str1);
int len2 = strlen(str2);
memset(dp,0,sizeof(dp));
if(str1[1] == str2[1])
dp[1][1] = 1;
for( int i = 1; i <= len1; i++)
{
for( int j = 1; j <= len2; j++)
{
if( str1[j] == str2[i])
dp[i][j] = dp[i-1][j-1] + 1;
else
dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
}
}
cout<<dp[len1][len2]<<endl;
}
}
#include <stdio.h>
#include <string.h>
#define maxn 10000 + 10
using namespace std;
int dp[maxn][300];
int main()
{
char str1[100];
char str2[100];
while(scanf("%s%s",str1 +1, str2 + 1))
{
int len1 = strlen(str1);
int len2 = strlen(str2);
memset(dp,0,sizeof(dp));
if(str1[1] == str2[1])
dp[1][1] = 1;
for( int i = 1; i <= len1; i++)
{
for( int j = 1; j <= len2; j++)
{
if( str1[j] == str2[i])
dp[i][j] = dp[i-1][j-1] + 1;
else
dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
}
}
cout<<dp[len1][len2]<<endl;
}
}
0 0
- 最长公共子序列(不需要连续)
- 最长连续公共子序列
- 最长连续公共子序列
- 最长公共子序列(连续)
- 最长公共子序列VS最长连续公共子序列
- 最长连续公共最长子序列
- poj1458(DP最长连续公共子序列)
- 最长公共子序列(连续)
- 最长公共子序列(非连续)
- 最长公共子序列(不连续)
- 求最长连续递增公共子序列
- 个人模板 最长公共连续子序列
- 最长连续公共子序列---动态规划
- 个人模板【最长公共连续子序列】
- 最大连续子序列VS最长公共子序列
- 动态规划 最长公共子序列LCS、最长公共连续子串、最长重复子串
- 最长公共连续子串和最长连续公共子序列
- 最长递增子序列(nlogn),最长公共子串(连续),最长公共子序列(不连续)
- 好久没有博客啦
- python基础教程第十一章学习笔记
- 在Java Web项目中建src/main/java包
- String和StringBuffer 常用方法总结
- oauth2.0 server side 模式解析
- 最长公共子序列(不需要连续)
- 应用层 总结
- GWT入门教程
- Struts2 url中包含感叹号实现动态方法调用
- sql2005企业版
- CentOS 6.3 64位下mysql5.5.25安装图解教程
- 8.使用do while循环,计算2+4+6+...+100
- Java获取当前的时间
- C++编程->预编译指令小结