最长公共子串(动态规划)

计算两个字符串的最大公共字串的长度
参考:https://www.nowcoder.com/profile/2879088/codeBookDetail?submissionId=12849430

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <vector>
#include<algorithm>
using namespace std;
int main()
{

    string str1,str2;
    while(cin>>str1)
    {
        cin>>str2;
        vector<vector<int> > matrix(str1.size(),vector<int>(str2.size()));
        int max_num=0;
        for(int i=0;i<str1.size();i++)
        {
            for(int j=0;j<str2.size();j++)
            {
                if(str1[i]!=str2[j])
                    matrix[i][j]=0;
                else if(i==0||j==0)
                {
                    matrix[i][j]=1;
                    if(max_num<1)
                        max_num=1;
                }
                else
                {
                    matrix[i][j]=matrix[i-1][j-1]+1;
                    if(matrix[i][j]>max_num)
                        max_num=matrix[i][j];
                }
            }
        }
        cout<<max_num<<endl;

    }
    return 0;
}
全部评论

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务