最长公共子串原理视频链接
题意:求两个字符串的最长公共子串。
思路:动态规划。
#include<bits/stdc++.h>
#define ll long long
#define mem(a) memset(a,0,sizeof(a))
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
using namespace std;
int dp[10005][10005];
int main()
{
string a,b;
while(cin>>a>>b){
for(int i=0;i<=a.length();i++){
for(int j=0;j<=b.length();j++){
if(i==0||j==0){
dp[i][j]=0;
continue;
}
if(a[i-1]==b[j-1]){
dp[i][j]=dp[i-1][j-1]+1;
}
else{
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
}
cout<<dp[a.length()][b.length()]<<endl;
}
return 0;
}