频道栏目
首页 > 资讯 > 其他 > 正文

最长公共子序列“编程开发”

17-12-08        来源:[db:作者]  
收藏   我要投稿

最长公共子序列“编程开发”

Input示例
abcicba
abdkscab
Output示例
abca
#include 
#include 

using namespace std;

int c[1001][1001], b[1001][1001];

void LSC(int n, int m, string x, string y)
{
    int i, j;
    for(i = 0; i <= n; i++)
        c[i][0] = 0;
    for(j = 0; j <= m; j++)
        c[0][j] = 0;
    for(i = 1; i <= n; i++)
    {
        for(j = 1; j <= m; j++)
        {
            if(x[i-1] == y[j-1])
            {
                c[i][j] = c[i-1][j-1] + 1;
                b[i-1][j-1] = 0;
            }
            else
            {
                if(c[i-1][j] >= c[i][j-1])
                {
                    c[i][j] = c[i-1][j];
                    b[i-1][j-1] = 1;
                }
                else{
                    c[i][j] = c[i][j-1];
                    b[i-1][j-1] = -1;
                }
            }
        }
    }
}

void S_LSC(string x, int i, int j)
{
    if(i == 0 || j == 0)
        return;
    if(b[i-1][j-1] == 0)
    {
        S_LSC(x, i-1, j-1);
        cout << x[i-1];
    }
    if(b[i-1][j-1] == 1)
    {
        S_LSC(x, i-1, j);
    }
    if(b[i-1][j-1] == -1)
    {
        S_LSC(x, i, j-1);
    }
}

int main()
{
    string x, y;
    int n, m;
    cin >> x >> y;
    n = x.length();
    m = y.length();
    LSC(n, m, x, y);
    S_LSC(x, n, m);
    return 0;
}
相关TAG标签
上一篇:黑客入侵挖矿平台:价值4.6亿比特币被盗
下一篇:谷歌问答功能测试:邀请明星拍视频回答网友常搜索问题
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站