您的位置:首页 > 其它

求两个字符串的最长公共子序列

2013-09-23 23:31 399 查看
// 求两个字符串的最长公共子序列.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

;

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: