洛谷 P1852 奇怪的字符串

题目描述

输入两个01串,输出它们的最长公共子序列的长度

输入输出格式

输入格式:

 

一行,两个01串

 

输出格式:

 

最长公共子序列的长度

 

输入输出样例

输入样例#1: 复制
01010101010 00000011111
输出样例#1: 复制
6

说明

01串长度≤10000

思路:lcs

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
string s1,s2;
int f[5010][5010];
int main(){
    cin>>s1>>s2;
    int len1=s1.length();
    int len2=s2.length();
    s1=' '+s1;s2=' '+s2;
    for(int i=1;i<=len1;i++)
        for(int j=1;j<=len2;j++)
            if(s1[i]==s2[j])    f[i][j]=f[i-1][j-1]+1;
              else    f[i][j]=max(f[i-1][j],f[i][j-1]);
    cout<<f[len1][len2];
}
细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
原文地址:https://www.cnblogs.com/cangT-Tlan/p/7899933.html