// 求两个字符串的最长公共子序列.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include<iostream>
#include<string>
#define N 10
using namespace std;
void longest(string s1,string s2)
{
int i,j;
int a[N][N];
for(i=0;i<s1.size();i++)
for(j=0;j<s2.size();j++)
a[i][j]=0;
for (j=0;j<s2.size();j++)
if (s1[0]==s2[j])
a[0][j]=1;
for (i=0;i<s1.size();i++)
if (s1[i]==s2[0])
a[i][0]=1;
int max=a[0][0];
int temp=0;
for(i=1;i < s1.size();i++)
for(j=1;j < s2.size();j++)
if(s1[i]==s2[j])
{
a[i][j]=a[i-1][j-1]+1;
if(max<a[i][j])
{
max=a[i][j];
temp=i;
}
}
if(max==0)
{
cout<<"没有公共子序列!";
}
else
{
cout<<"两个字符串的最长公共子序列为:";
for(i=temp-max+1;i<=temp;i++)
cout<<s1[i];
cout<<endl;
}
}
int main()
{
string s1,s2;
cout<<"请输入两个字符串:"<<endl;
cout<<"一个字符串为:";
cin>>s1;
cout<<"另一个字符串为:";
cin>>s2;
longest(s1,s2);
cout<<endl;
system("pause");
return 0;
}
求两个字符串的最长公共子序列
最新推荐文章于 2024-08-23 20:07:50 发布