//POJ1458CommonSubsequence
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN = 1000 + 5;
char s1[MAXN] = {0};
char s2[MAXN] = {0};
int main() {
while(scanf("%s", s1) == 1) {
scanf("%s", s2);
const int len1 = strlen(s1);
const int len2 = strlen(s2);
int Max[len1 + 1][len2 + 1];//两个下标分别代表第一个串的长度及第二个串的长度
//状态为 Max(i, j)中的(i,j)
for(int i = 0; i <= len1; i++) Max[i][0] = 0;
for(int j = 0; j <= len2; j++) Max[0][j] = 0;
//initialize
for(int i = 1; i <= len1; i++) {
for(int j = 1; j <= len2; j++) {
if(s1[i - 1] == s2[j - 1]) Max[i][j] = Max[i - 1][j - 1] + 1;
else{
Max[i][j] = max(Max[i][j - 1], Max[i - 1][j]);
}
}
}
printf("%d\n", Max[len1][len2]);
}
return 0;
}
POJ1458CommonSubsequence
最新推荐文章于 2021-08-02 16:03:10 发布