求最长公共序列问题
来源:互联网 发布:生产批号查询软件 编辑:程序博客网 时间:2024/05/21 12:45
#include <iostream>
#include <string.h>
using namespace std;
#define NUM 100
int public_length(char *a, char *b)
{
int lena = strlen(a);
int lenb = strlen(b);
int DP[NUM][NUM];
for(int i=0; i<=lena; i++)
DP[i][0] = 0;
for(int j=0; j<=lenb; j++)
DP[0][j] = 0;
for(int i=1; i<=lena; i++)
for(int j=1; j<=lenb; j++)
{
if(a[i-1] == b[j-1])
{
DP[i][j] = DP[i-1][j-1] + 1;
}
else
{
if(DP[i-1][j] < DP[i][j-1])
DP[i][j] = DP[i][j-1];
else
DP[i][j] = DP[i-1][j];
}
}
return DP[lena][lenb];
}
int main()
{
char a[NUM];
char b[NUM];
int T;
cin>>T;
for(int i=0; i<T; i++)
{
cin>>a;
cin>>b;
int result = public_length(a, b);
cout<<result<<endl;
}
return 0;
}
#include <string.h>
using namespace std;
#define NUM 100
int public_length(char *a, char *b)
{
int lena = strlen(a);
int lenb = strlen(b);
int DP[NUM][NUM];
for(int i=0; i<=lena; i++)
DP[i][0] = 0;
for(int j=0; j<=lenb; j++)
DP[0][j] = 0;
for(int i=1; i<=lena; i++)
for(int j=1; j<=lenb; j++)
{
if(a[i-1] == b[j-1])
{
DP[i][j] = DP[i-1][j-1] + 1;
}
else
{
if(DP[i-1][j] < DP[i][j-1])
DP[i][j] = DP[i][j-1];
else
DP[i][j] = DP[i-1][j];
}
}
return DP[lena][lenb];
}
int main()
{
char a[NUM];
char b[NUM];
int T;
cin>>T;
for(int i=0; i<T; i++)
{
cin>>a;
cin>>b;
int result = public_length(a, b);
cout<<result<<endl;
}
return 0;
}
- 求最长公共序列问题
- 求最长公共子序列
- 求公共最长子序列
- 求最长公共子序列
- 求最长公共子序列
- 求最长公共子序列
- 求最长公共子序列
- 求最长公共子序列
- 求最长公共子序列
- 求公共最长子序列
- 求最长公共子序列
- 最长公共子序列问题(不要求连续)
- 动态规划求最长公共子序列问题
- 最长公共子序列问题模板(不要求连续)
- 动态规划:求最长公共子序列问题
- 最长公共子序列问题-求所有公共子序列(java核心代码实现)
- 最长公共子序列问题
- 最长公共子序列问题
- C# 全过程用户权限实现策论 (3.权限与代码安全访问)
- CFile操作详解
- C/C++中的i18n
- Larbin网络爬虫
- C/C++里面使用的可变参数函数
- 求最长公共序列问题
- JavaScript OOP 思想
- RAC 实例不能启动 ORA-1589 signalled during ALTER DATABASE OPEN
- CBitmapButton的使用
- vector::resize() 使用array index 和vector::reserve()使用push_back()的性能差别
- C++字符类型总结
- FilterPro之滤波器设计
- C++私有继承和保护继承
- 谈SOA和平台