这个题直接用上一个的代码就能通过,不过我看答案里有一个不是从下标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;

}