zoj 1953
#include<iostream>
#include<fstream>
using namespace std;
char c1[101],c2[101];
int dp[103][103];
int n1,n2;
void print(int s,int t){
int i;
if(s==0&&t==0) return;
if(s==0)
{
for(i=0;i<t;i++)
cout<<c2[i];
return;
}
if(t==0)
{
for(i=0;i<s;i++)
cout<<c1[i];
return;
}
if(c1[s-1]==c2[t-1])
{
print(s-1,t-1);
cout<<c1[s-1];
}
else
if(dp[s][t]==dp[s-1][t]+1)
{
print(s-1,t);
cout<<c1[s-1];
}
else
{
print(s,t-1);
cout<<c2[t-1];
}
}
void read(){
// ifstream cin("in.txt");
int i,j,k;
while(cin>>c1>>c2)
{
n1=strlen(c1);
n2=strlen(c2);
for(i=1;i<=n1;i++)
dp[i][0]=i;
for(i=1;i<=n2;i++)
dp[0][i]=i;
for(i=1;i<=n1;i++)
for(j=1;j<=n2;j++)
if(c1[i-1]==c2[j-1])
{
dp[i][j]=dp[i-1][j-1]+1;
}
else
{
dp[i][j]=min(dp[i-1][j],dp[i][j-1])+1;
}
print(n1,n2);
cout<<endl;
}
}
int main(){
read();
return 0;
}
#include<fstream>
using namespace std;
char c1[101],c2[101];
int dp[103][103];
int n1,n2;
void print(int s,int t){
int i;
if(s==0&&t==0) return;
if(s==0)
{
for(i=0;i<t;i++)
cout<<c2[i];
return;
}
if(t==0)
{
for(i=0;i<s;i++)
cout<<c1[i];
return;
}
if(c1[s-1]==c2[t-1])
{
print(s-1,t-1);
cout<<c1[s-1];
}
else
if(dp[s][t]==dp[s-1][t]+1)
{
print(s-1,t);
cout<<c1[s-1];
}
else
{
print(s,t-1);
cout<<c2[t-1];
}
}
void read(){
// ifstream cin("in.txt");
int i,j,k;
while(cin>>c1>>c2)
{
n1=strlen(c1);
n2=strlen(c2);
for(i=1;i<=n1;i++)
dp[i][0]=i;
for(i=1;i<=n2;i++)
dp[0][i]=i;
for(i=1;i<=n1;i++)
for(j=1;j<=n2;j++)
if(c1[i-1]==c2[j-1])
{
dp[i][j]=dp[i-1][j-1]+1;
}
else
{
dp[i][j]=min(dp[i-1][j],dp[i][j-1])+1;
}
print(n1,n2);
cout<<endl;
}
}
int main(){
read();
return 0;
}