洛谷 P1852 奇怪的字符串

来源:互联网 发布:陈坤孩子的母亲知乎 编辑:程序博客网 时间:2024/06/03 23:47

题目描述

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

输入输出格式

输入格式:

一行,两个01串

输出格式:

最长公共子序列的长度

输入输出样例

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

说明

01串长度≤10000


求最长公共子序列,还需要滚动数组压缩空间。


#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int N=10005;int l1,l2,f[3][N];char s1[N],s2[N];int main(){scanf("%s%s",s1+1,s2+1);l1=strlen(s1+1),l2=strlen(s2+1);for(int i=1;i<=l1;i++)for(int j=1;j<=l2;j++){int k=i&1;if(s1[i]==s2[j])f[k][j]=f[k^1][j-1]+1;elsef[k][j]=max(f[k^1][j],f[k][j-1]);}printf("%d\n",f[l1&1][l2]);return 0;}


0 0
原创粉丝点击