真的很水,,原谅我吧
#include<iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> using namespace std; const int N=1002; int dp[N][N]; char a[N],b[N]; int main() { while(scanf("%s %s",a,b)!=EOF) { int n=strlen(a); int m=strlen(b); memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(a[i] == b[j]) dp[i+1][j+1]=dp[i][j]+1; else dp[i+1][j+1]=max(dp[i+1][j],dp[i][j+1]); } } cout<<dp[n][m]<<endl; } }