zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    UNIX时间戳/日期转换
    慎用date获取未来时间
    lnmp集成开发环境安装pdo_dblib扩展
    elementary OS下netbeans中文乱码的问题
    一个轻量级javascript框架的设计模式
    debian清空消息通知
    一道数组方面的笔试题
    模拟post提交
    P2970 [USACO09DEC]自私的放牧Selfish Grazing
    P1063 能量项链
  • 原文地址:https://www.cnblogs.com/tracy520/p/6974477.html
Copyright © 2011-2022 走看看