• csuoj Nearest Sequence


    Description

            Do you remember the "Nearest Numbers"? Now here comes its brother:"Nearest Sequence".Given three sequences of char,tell me the length of the longest common subsequence of the three sequences.

    Input

            There are several test cases.For each test case,the first line gives you the first sequence,the second line gives you the second one and the third line gives you the third one.(the max length of each sequence is 100)

    Output

     

            For each test case,print only one integer :the length of the longest common subsequence of the three sequences.

    Sample Input

    abcd
    abdc
    dbca
    abcd
    cabd
    tsc

    Sample Output

    2
    1

    代码:

    #include<iostream>
    #include<string>
    using namespace std;
    string a,b,c;
    
    int dp[101][101][101];
    int main(){
        while(cin >> a >> b >> c){
            int x,y,z;
            x = a.size();
            y = b.size();
            z = c.size();
    //        cout << x << " " << y << " " << z << endl;
            dp[0][0][0] = 0;
            for(int i = 0;i <= x;i++){
                for(int j = 0;j <= y;j++)
                    dp[i][j][0] = 0;
            }
            for(int i = 0;i <= x;i++){
                for(int k = 0;k <= z;k++)
                    dp[i][0][k] = 0;
            }
            for(int j = 0;j <= y;j++){
                for(int k = 0;k <= z;k++)
                    dp[0][j][k] = 0;
            }
            for(int i = 1;i <= x;i++){
                for(int j = 1;j <= y;j++){
                    for(int k = 1;k <= z;k++){
    //                    cout << a[i - 1] << " " << b[j + 1] << " " << c[k + 1] << endl;
                        if(a[i - 1] == b[j - 1] && a[i - 1] == c[k - 1])
                            dp[i][j][k] = dp[i - 1][j - 1][k - 1] + 1;
                        else{
                            dp[i][j][k] = max(max(dp[i - 1][j][k],dp[i][j - 1][k]),max(dp[i - 1][j][k],dp[i][j][k - 1]));
                        }
    //                    cout << i << " " << j << " " << k << " " << dp[i][j][k] << endl;
                    }
                }
            }
            cout << dp[x][y][z] <<endl;
        }
        return 0;
    }
  • 相关阅读:
    git技能
    iOS 命名规则
    iOS crash 报错类型
    iOS 面试相关
    【转】app后端如何选择合适的数据库产品
    App的token机制
    【转】Spring注解详解
    spring mvc ModelAndView 404的原因
    ibatis 环境搭建(1)
    Android中的Selector的用法
  • 原文地址:https://www.cnblogs.com/tracy520/p/6974477.html
Copyright © 2020-2023  润新知