E06 线性DP T493246 最长公共子串

E06 线性DP 最长公共子串_哔哩哔哩_bilibili

 

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;
}

 

U396793 最长公共子串 - 洛谷

// 线性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;
}

 

P5546 [POI 2000] 公共串 - 洛谷

P12729 [KOI 2021 Round 2] 最长公共括号子串 - 洛谷

P4112 [HEOI2015] 最短不公共子串 - 洛谷

SP1811 LCS - Longest Common Substring - 洛谷

SP1812 LCS2 - Longest Common Substring II - 洛谷

SP10570 LONGCS - Longest Common Substring - 洛谷

 

posted @ 2023-04-10 09:17  董晓  阅读(859)  评论(0)    收藏  举报