LCS最长公共子序列
来源:互联网 发布:手机象棋打谱软件 编辑:程序博客网 时间:2024/06/07 13:45
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <algorithm>
#include <string>
using namespace std;
#define N 1005
int dp[N+1][N+1];
char str1[N],str2[N];
int lcs(int len1,int len2)
{
int i,j;
int len=max(len1,len2);
for(i=0;i<=len;i++){
dp[i][0]=0;
dp[0][i]=0;
}
for(i=1;i<=len1;i++){
for(j=1;j<=len2;j++){
if(str1[i-1]==str2[j-1]){
dp[i][j]=dp[i-1][j-1]+1;
}
else {
dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
}
}
}
return dp[len1][len2];
}
int main()
{
while(cin>>str1>>str2){
int len1=strlen(str1);
int len2=strlen(str2);
cout<<lcs(len1,len2)<<endl;
}
return 0;
}
#include <stdio.h>
#include <cstring>
#include <algorithm>
#include <string>
using namespace std;
#define N 1005
int dp[N+1][N+1];
char str1[N],str2[N];
int lcs(int len1,int len2)
{
int i,j;
int len=max(len1,len2);
for(i=0;i<=len;i++){
dp[i][0]=0;
dp[0][i]=0;
}
for(i=1;i<=len1;i++){
for(j=1;j<=len2;j++){
if(str1[i-1]==str2[j-1]){
dp[i][j]=dp[i-1][j-1]+1;
}
else {
dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
}
}
}
return dp[len1][len2];
}
int main()
{
while(cin>>str1>>str2){
int len1=strlen(str1);
int len2=strlen(str2);
cout<<lcs(len1,len2)<<endl;
}
return 0;
}
阅读全文
0 1
- LCS:最长公共子序列
- LCS---最长公共子序列
- 最长公共子序列 LCS
- LCS -- 最长公共子序列
- LCS最长公共子序列
- 最长公共子序列LCS
- LCS-最长公共子序列
- 最长公共子序列 LCS
- 最长公共子序列(LCS)
- 最长公共子序列(LCS)
- 最长公共子序列LCS
- LCS最长公共子序列
- 最长公共子序列LCS
- 最长公共子序列 LCS
- LCS最长公共子序列
- 最长公共子序列(LCS)
- 最长公共子序列LCS
- 最长公共子序列LCS
- Vue组件系统
- Enddevice and Coordinate control join network
- 序列化接口的id有什么用
- HDU1029
- iOS之自动检测项目中的无用的图片资源
- LCS最长公共子序列
- flask route 方法不能使用 test
- Win用戶配置 gitconfig 步驟及注意事項
- 【Python学习系列二十六】networkx库图最短路径求解
- hdu 5285 二分图+染色
- mysql报错Error 1045(28000): Access denied for user ‘root’@’localhost’
- POJ
- C语言编程实战——编写简单贪吃蛇程序
- fish