zoukankan      html  css  js  c++  java
  • 【dp专题1】F

    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. 
    The program input is from a text file. Each data set in the file contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct. 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. 
    Input
    abcfbc abfcab
    programming contest 
    abcd mnp
    Output
    4
    2
    0
    Sample Input
    abcfbc abfcab
    programming contest 
    abcd mnp
    Sample Output
    4
    2
    0
    #include<stdio.h>
    #include<string.h>
    
    int f[1000][1000];
    
    int main()
    {
        int l1,l2;
        int i,j;
        char s1[1000],s2[1000];
        while(scanf("%s%s",s1+1,s2+1)!=EOF)
        {
            l1 = strlen(s1+1);
            l2 = strlen(s2+1);
    
            for(i = 0; i <= l1;i ++)
                f[i][0] = 0;
            for(i = 0; i <= l2; i ++)
                f[0][i] = 0;
            for(i = 1; i <= l1; i ++)
            {
                for(j = 1; j <= l2; j ++)
                {
                    if(s1[i] == s2[j])
                    {
                        f[i][j] = f[i-1][j-1] + 1;
                    }
                    else
                    {
                        if(f[i-1][j] > f[i][j-1])
                            f[i][j] = f[i-1][j];
                        else
                            f[i][j] = f[i][j-1];
                    }
                }
            }
            printf("%d
    ",f[l1][l2]);
        }
        return 0;
    }
    
  • 相关阅读:
    scikit-opt——DE(差分进化)
    scikit-opt——SA(模拟退火)
    scikit-opt——Python中的群体智能优化算法库
    springboot EnableAutoConfiguration
    JAVA线程sleep和wait方法区别
    数据库优化-水平拆分 垂直拆分
    component和bean区别
    mysql 索引
    maven资源文件的相关配置
    IntelliJ IDEA 2017.2.2 的破解 有效期 2116年
  • 原文地址:https://www.cnblogs.com/hellocheng/p/7350110.html
Copyright © 2011-2022 走看看