码迷,mamicode.com
首页 > 其他好文 > 详细

输出一个公共子序列

时间:2015-06-06 14:45:09      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!