E06 线性DP T493246 最长公共子串
// 线性DP O(n^2) #include<bits/stdc++.h> using namespace std; const int N=1005; char a[N],b[N]; int n,m,f[N][N],ans; int main(){ cin>>a+1>>b+1; n=strlen(a+1); m=strlen(b+1); for(int i=1; i<=n; i++){ for(int j=1; j<=m; j++){ if(a[i]==b[j]) f[i][j]=f[i-1][j-1]+1; if(f[i][j]>ans) ans=f[i][j]; } } cout<<ans<<"\n"; return 0; }
// 线性DP O(n^2) #include<bits/stdc++.h> using namespace std; const int N=1005; char a[N],b[N]; int n,m,f[N][N],ans,pos; int main(){ cin>>a+1>>b+1; n=strlen(a+1); m=strlen(b+1); for(int i=1; i<=n; i++){ for(int j=1; j<=m; j++){ if(a[i]==b[j]) f[i][j]=f[i-1][j-1]+1; if(f[i][j]>ans) ans=f[i][j], pos=i; } } cout<<ans<<"\n"; for(int i=pos-ans+1;i<=pos;i++) cout<<a[i]; return 0; }
P12729 [KOI 2021 Round 2] 最长公共括号子串 - 洛谷
SP1811 LCS - Longest Common Substring - 洛谷
SP1812 LCS2 - Longest Common Substring II - 洛谷
SP10570 LONGCS - Longest Common Substring - 洛谷
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号