zoukankan      html  css  js  c++  java
  • (最长公共子序列 暴力) Common Subsequence (poj 1458)

     

    Description

    A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2, ..., xm > another sequence Z = < z1, z2, ..., zk > is a subsequence of X if there exists a strictly increasing sequence < i1, i2, ..., ik > of indices of X such that for all j = 1,2,...,k, xij = zj. For example, Z = < a, b, f, c > is a subsequence of X = < a, b, c, f, b, c > with index sequence < 1, 2, 4, 6 >. Given two sequences X and Y the problem is to find the length of the maximum-length common subsequence of X and Y.

    Input

    The program input is from the std input. Each data set in the input contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct.

    Output

    For each set of data the program prints on the standard output the length of the maximum-length common subsequence from the beginning of a separate line.

    Sample Input

    abcfbc         abfcab
    programming    contest 
    abcd           mnp

    Sample Output

    4
    2
    0


    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    
    #define met(a,b) (memset(a,b,sizeof(a)))
    #define N 1100
    #define INF 0xffffff
    
    char s1[N], s2[N];
    int dp[N][N];
    
    int main()
    {
        while(scanf("%s%s", s1, s2)!=EOF)
        {
            int i, j, len1=strlen(s1), len2=strlen(s2);
    
            met(dp, 0);
            
            ///要考虑下下标越界的问题
            for(i=1; i<=len1; i++)
            for(j=1; j<=len2; j++)
            {
                if(s1[i-1]==s2[j-1])
                    dp[i][j] = dp[i-1][j-1] + 1;
                else dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
            }
    
            printf("%d
    ", dp[len1][len2]);
        }
        return 0;
    }


  • 相关阅读:
    Yii中CreateUrl的使用总结
    scite配置文件及常用设置
    smarty中判断数组是否为空的方法
    Notepad++添加插件Funtion List 支持PHP
    类的例子1
    class的使用
    lambda 的使用汇总
    作用域
    模块的整理汇总
    函数使用的健壮性
  • 原文地址:https://www.cnblogs.com/YY56/p/5444205.html
Copyright © 2011-2022 走看看