最长公共子串,裸的复杂度N^2
#include<bits/stdc++.h> using namespace std; int dp[1005][1005]; int main() { char a[1005]; char b[1005]; scanf("%s%s",a,b); memset(dp,0,sizeof(dp)); int lena=strlen(a); int lenb=strlen(b); dp[0][0]=0; for(int i=1;i<=lena;i++) { for(int j=1;j<=lenb;j++) { if(a[i-1]==b[j-1]) { dp[i][j]=max(dp[i-1][j-1],dp[i][j])+1; } else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } int ans=0; for(int i=0;i<=lena;i++) for(int j=0;j<=lenb;j++) ans=max(ans,dp[i][j]); cout<<ans<<endl; return 0; }