与“查找两个字符串a,b中的最长公共子串”题的解答一样,只是需要输出的是长度

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char str1[301];
char str2[301];
char res[301] = {0};
int dp[301][301] = {0};
int main()
{
    //gets(str1);
    //gets(str1);
    scanf("%s",str1);
    scanf("%s",str2);
    int m = strlen(str1);
    int n = strlen(str2);
    int max = 0;
    int start = 0;

    if(m < n)
    {
        for (int i = 1; i <= m; i++) {
            char c1 = str1[i - 1];
            for (int j = 1; j <= n; j++) {
                char c2 = str2[j - 1];
                if (c1 == c2) {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }
                if(dp[i][j] > max)
                {
                    max = dp[i][j];
                    //start = i - max;
                }
            }
        }
        /*
        for(int i=start; i < start+max; i++)
        {
            printf("%c", str1[i]);
        }
        */
        printf("%d\n", max);
    }
    else
    {
        for (int i = 1; i <= n; i++) {
            char c1 = str2[i - 1];
            for (int j = 1; j <= m; j++) {
                char c2 = str1[j - 1];
                if (c1 == c2) {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }
                if(dp[i][j] > max)
                {
                    max = dp[i][j];
                    //start = i - max;
                }
            }
        }
        /*
        for(int i=start; i < start+max; i++)
        {
            printf("%c", str2[i]);
        }
        */
        printf("%d\n", max);
    }
    return 0;
}