最長公共子序列

/*************************************************
*@time          2016/08/25 9:48
*@place         ctrip.15#.9f
**************************************************/
#include<cstdio>
#include<cstring>
#define MAX_LENGTH 100

int main()
{
    char str1[]="123456789";
    char str2[]="123";
    int dp[10][4];
    for(int i=0;i<=9;i++)
    {
        for(int j=0;j<=3;j++)
        {
            dp[i][j]=0;
        }
    }
    for(int i=1;i<=9;i++)
    {
        for(int j=1;j<=3;j++)
        {
            if(str1[i-1]==str2[j-1])
            {
                dp[i][j]=dp[i-1][j-1]+1;
            }
            else if(dp[i-1][j]>dp[i][j-1])
            {
                  dp[i][j]=dp[i-1][j];
            }
            else
            {
                dp[i][j]=dp[i][j-1];
            }
        }
    }
    printf("%s %s\n",str1,str2);
    for(int i=9,j=3;i>0&&j>0;)
    {

            if(str1[i-1]==str2[j-1])
            {
                printf("%c ",str1[i-1]);
                i--;
                j--;
            }
             else if(dp[i-1][j]>dp[i][j-1])
            {
                  i--;
            }
            else
            {
                j--;
            }

    }

}

發佈了35 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章