这个题直接用上一个的代码就能通过,不过我看答案里有一个不是从下标1输入,是正常从下标0输入,然后在算dp的时候处理了一下。
#include <stdio.h> #include <string.h> int fun(char *str1,char * str2) { int x = strlen(str1); int y = strlen(str2); int c[101][101] = {0}; for(int i = 1;i<=x;i++) { for(int j = 1;j<=y;j++) { if(str1[i-1] == str2[j-1]) { c[i][j] = c[i-1][j-1]+1; } else{ c[i][j] = ((c[i-1][j]>=c[i][j-1])?c[i-1][j]:c[i][j-1]); } } } return c[x][y]; } int main() { char str1[100]; char str2[100]; int k; while(scanf("%s",str1)!=EOF){ scanf("%s",str2); k = fun(str1,str2); printf("%d\n",k); } return 0; }