#include<stdio.h> #include<string.h> #include<iostream> using namespace std; int max3(int a,int b,int c){ int d=b>c?b:c; return a>d?a:d; } int max2(int a,int b){ return a>b?a:b; } int dp[1001][1001]; int main(){ char a[1001],b[1001]; while(cin>>a>>b){ int lena=strlen(a); int lenb=strlen(b); memset(dp,0,sizeof(dp)); int i,j; if(a[0]==b[0])dp[0][0]=1; for(i=1;i<lena;i++) { // dp[i][0]+=dp[i-1][0]; if(a[i]==b[0])dp[i][0]++; } for(i=1;i<lenb;i++) { // dp[0][i]+=dp[0][i-1]; if(a[0]==b[i])dp[0][i]++; } for(i=1;i<lena;i++) for(j=1;j<lenb;j++){ //dp[i][j]+=max2(dp[i-1][j],dp[i][j-1]); if(a[i]==b[j])dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max2(dp[i][j-1],dp[i-1][j]); } cout<<dp[lena-1][lenb-1]<<endl; } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。