标签:
1 #include <cstring> 2 #include <cstdio> 3 #include <algorithm> 4 using namespace std; 5 6 char a[1005],b[1005]; 7 int dp[1005][1005]; 8 int p[1005]; 9 10 int main() 11 { 12 scanf ("%s %s",a,b); 13 int la=strlen(a),lb=strlen(b); 14 for(int i=1;i<=la;i++) 15 { 16 for(int j=1;j<=lb;j++) 17 { 18 if(a[i-1]==b[j-1]) 19 dp[i][j]=dp[i-1][j-1]+1; 20 else 21 dp[i][j]=max(dp[i-1][j],dp[i][j-1]); 22 } 23 } 24 int i=la,j=lb,k=0; 25 while (dp[i][j]) 26 { 27 if(dp[i][j]==dp[i-1][j]) 28 i--; 29 else if(dp[i][j]==dp[i][j-1]) 30 j--; 31 else 32 { 33 p[k++]=i-1; 34 i--; 35 j--; 36 } 37 } 38 for(int i=k-1;i>=0;i--) 39 printf("%c",a[p[i]]); 40 return 0; 41 }
标签:
原文地址:http://www.cnblogs.com/bei-insomia/p/4556504.html