题意:给你两个字符串,要求你求出它们的最长公共子序列。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
char str1[N],str2[N];
int dp[N][N];
int main() {
int len1,len2;
while(gets(str1)) {
gets(str2);
len1 = strlen(str1);
len2 = strlen(str2);
memset(dp,0,sizeof(dp));
for(int i = 1; i <= len1; i++) {
for(int j = 1; j <= len2; j++) {
if(str1[i-1] == str2[j-1]) {
dp[i][j] = dp[i-1][j-1] + 1;
}else {
dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
}
}
}
printf("%d\n",dp[len1][len2]);
}
return 0;
}