入门的LCS题目
不知道为什么我用cin>>a+1不能AC
还得自己把2个串往后挪一般,汗。。。
/*
题意:2个串的长度-2个串的最长公共子序列。
*/#include<iostream>
#include<cstring>
using namespace std;
const int MAXN=105;
int mymax(int a,int b)
{
if(a>b)
{
return a;
}
else
{
return b;
}
}
int main()
{
char a[MAXN],b[MAXN];
while(cin>>a)
{
cin>>b;
int dp[MAXN][MAXN]={0};
int lena=strlen(a);
int lenb=strlen(b);
for(int i=lena-1;i>=0;i--)
{
a[i+1]=a[i];
}
a[lena+1]='\0';
for(int i=lenb-1;i>=0;i--)
{
b[i+1]=b[i];
}
b[lenb+1]='\0';
for(int i=1;i<=lena;i++)
{
for(int j=1;j<=lenb;j++)
{
if(a[i]==b[j])
{
dp[i][j]=dp[i-1][j-1]+1;
}
else
{
dp[i][j]=mymax(dp[i-1][j],dp[i][j-1]);
}
}
}
cout<<(lena+lenb-dp[lena][lenb])<<endl;
}
return 0;
}