zoukankan      html  css  js  c++  java
  • 最长公共子序列简单实现

    int LCS(string str1, string str2)  //返回最长公共字串长度
    {
        //创建矩阵
        int** martix;
        martix = new int*[str1.length()+1];
        for(int i =0; i<=str1.length(); i++)
        {
            martix[i] = new int[str2.length()+1];
        }
        //初始化矩阵
        for (int i = 0; i <= str1.length(); i++)   martix[i][0] = 0;
        for (int j = 0; j <= str2.length(); j++)   martix[0][j] = 0;
        //填充矩阵
        for (int i = 1; i <= str1.length(); i++)
        {
            for (int j = 1; j <= str2.length(); j++)
            {
                if (str1[i-1] == str2[j-1])
                {
                    martix[i][j] = martix[i-1][j-1] + 1;
                }
                else
                {
                    martix[i][j]=0;
                }
            }
        }
        //找到最大处即最长处
        int max(0),imax(0),jmax(0);
        for (int i = 0; i <= str1.length(); i++)
        {
            for (int j = 0; j <= str2.length(); j++)
            {
                if(martix[i][j]>max)
                {
                    max = martix[i][j];
                    imax = i;
                    jmax = j;
                }
            }
        }
        cout<<"最长公共字串长度为:"<<max<<endl;
        cout<<"最长公共字串为:";
        for(int i = max; i>0; i--)
        {
            cout<<str1[imax-i];
        }
        cout<<endl;
        for(int i =0; i<=str1.length(); i++)
        {
            delete[] martix[i];
        }
        delete[] martix;
        return max;
    }
  • 相关阅读:
    iOS--异步下载
    linux搭建ftp服务器
    hexo常用命令
    Markdown入门
    Markdown 语法和 MWeb 写作使用说明
    vi/vim
    微信聊天机器人
    .vimrc
    配置双机
    python学习笔记(一)
  • 原文地址:https://www.cnblogs.com/moren/p/3946516.html
Copyright © 2011-2022 走看看