zoukankan      html  css  js  c++  java
  • UVA10405

    UVA - 10405

    Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu

    []   [Go Back]   [Status]  

    Description

    Download as PDF
     

    Problem C: Longest Common Subsequence

    Sequence 1:                

    Sequence 2:                
    Given two sequences of characters, print the length of the longest common subsequence of both sequences. For example, the longest common subsequence of the following two sequences:

    abcdgh
    aedfhr
    
    is adh of length 3.

    Input consists of pairs of lines. The first line of a pair contains the first string and the second line contains the second string. Each string is on a separate line and consists of at most 1,000 characters

    For each subsequent pair of input lines, output a line containing one integer number which satisfies the criteria stated above.

    Sample input

    a1b2c3d4e
    zz1yy2xx3ww4vv
    abcdgh
    aedfhr
    abcdefghijklmnopqrstuvwxyz
    a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0
    abcdefghijklmnzyxwvutsrqpo
    opqrstuvwxyzabcdefghijklmn
    

    Output for the sample input

    4
    3
    26
    14
    



    #include <cstdlib>
    #include <cstring>
    #include <string>
    #include <iostream>
    using namespace std;
    #define N 10005
    string str1,str2;
    int dp[N+1][N+1] ;
    int maxx(int a , int b)
    {     
        if(a > b) return a ;  
        return b ;
    }
    int LCSL(int len1 , int len2)
    {     
        int i , j ;   
        int len = maxx(len1 , len2);    
        for( i = 0 ; i <= len; i++ )    
            dp[i][0] = 0,dp[0][i] = 0;   
        for( i = 1 ; i<= len1 ; i++)      
            for( j = 1 ; j <= len2 ; j++)      
                if(str1[i - 1] == str2[j - 1])           
                    dp[i][j] = dp[i - 1][ j - 1] + 1 ;      
                else                 
                    dp[i][j] = maxx(dp[i - 1][ j ] , dp[i][j - 1]) ;    
                return dp[len1][len2]; }
    int main()
    {     
        while(getline(cin,str1))
        {          
            getline(cin,str2);      
            int len1=str1.size();      
            int len2 =str2.size();   
            cout<<LCSL(len1 , len2)<<endl;  
        }     
        return 0;
    }


  • 相关阅读:
    Java Web 网络留言板2 JDBC数据源 (连接池技术)
    Java Web 网络留言板3 CommonsDbUtils
    Java Web ConnectionPool (连接池技术)
    Java Web 网络留言板
    Java Web JDBC数据源
    Java Web CommonsUtils (数据库连接方法)
    Servlet 起源
    Hibernate EntityManager
    Hibernate Annotation (Hibernate 注解)
    wpf控件设计时支持(1)
  • 原文地址:https://www.cnblogs.com/Deng1185246160/p/2866864.html
Copyright © 2011-2022 走看看