zoukankan      html  css  js  c++  java
  • 最长公共子序列

    给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。

    输入格式

    第一行包含两个整数N和M。

    第二行包含一个长度为N的字符串,表示字符串A。

    第三行包含一个长度为M的字符串,表示字符串B。

    字符串均由小写字母构成。

    输出格式

    输出一个整数,表示最大长度。

    数据范围

    1N1000

    输入样例:

    4 5
    acbd
    abedc
    

    输出样例:

    3
    #include<bits/stdc++.h>
    
    using namespace std;
    int n,m;
    char a[1010],b[1010];
    int dp[1010][1010];
    
    int main() {
        ios::sync_with_stdio(0);
        cin >> n >> m >> a + 1 >> b + 1;
       for(int i = 1; i <= n; i++) {
           for(int j = 1; j <= m; j++){
               if(a[i] == b[j])
                   dp[i][j] = dp[i - 1][j -1] + 1;
               else dp[i][j] = max(dp[i - 1][j],dp[i][j - 1]);
           }
       }
       cout << dp[n][m];
        return 0;
    
    }
  • 相关阅读:
    PHP学习(一)----变量及字符串
    swith
    重写和重载的区别
    静态对象与非静态对象
    继承
    面向对象
    五个对面向对象的实例
    双色球 36选7
    菱形java代码
    双色球代码
  • 原文地址:https://www.cnblogs.com/xcfxcf/p/12893465.html
Copyright © 2011-2022 走看看