题目意思:
简单DP应用。。
给你两个字符串看看有依次有多少字符相同,
Dp【i】【j】表示str_1的前i个字符与str_2的前J个字符有dp[i][j]个相同的。
dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
#include"stdio.h" #include"string.h" #define N 1001 int dp[N][N]; int MAX(int a,int b) { if(a>b)return a; return b; } int main() { int len_1,len_2,i,j; char str_1[N],str_2[N]; while(scanf("%s %s",str_1,str_2)!=-1) { len_1=strlen(str_1); len_2=strlen(str_2); memset(dp,0,sizeof(dp)); for(i=1;i<=len_1;i++) { for(j=1;j<=len_2;j++) if(str_1[i-1]==str_2[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[len_1][len_2]); } return 0; }