LCS+滚动数组,处理滚动数组时候要细心,不幸贡献了一次WA
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxl= 1e3;
char sa[maxl], sb[maxl];
int la, lb;
int dp[maxl];
int main()
{
while (EOF!= scanf("%s %s", sa+1, sb+1)){
la= strlen(sa+1);
lb= strlen(sb+1);
memset(dp, 0, sizeof(dp));
for (int i= 1; i<= la; ++i){
int t= 0, tt= 0;
for (int j= 1; j<= lb; ++j){
t= tt;
tt= dp[j];
if (sa[i]== sb[j]){
dp[j]= t+1;
}
else{
dp[j]= max(dp[j], dp[j-1]);
}
}
}
cout<<dp[lb]<<endl;
}
return 0;
}