`#include<stdio.h>
include<string.h>
define N 1001
char str1[N];
char str2[N];
char str[N];
int dpN;
int max(int a, int b) {
return a > b ? a : b;
}
int main() {
int i, j, len1, len2;
scanf("%s %s", str1+1, str2+1);
memset(dp, 0, sizeof(dp));
len1 = strlen(str1+1);
len2 = strlen(str2+1);
for(i = 1; i <= len1; i++) {
for (j = 1; j <= len2; j++) {
if (str1[i] == str2[j])
dp[i][j] = dp[i-1][j-1] + 1;
else dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
int k = len1, m = len2, num = 0;
while (k&&m) {
if (str1[k] == str2[m]) {
str[num] = str[k];
num++;
k--;
m--;
} else if (dp[k][m] == dp[k-1][m]) {
k--;
} else if (dp[k][m] == dp[k][m-1]) {
m--;
}
}
for(int q = num-1; q >= 0; q--) {
printf("%c", str[q]);
}
printf("
");
return 0;
}
`
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…