题目描述
输入两个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]; }