Advertisement
LZsolar

SMMR-108: Magic Spell II

Apr 15th, 2020
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. string a,b,ans;
  4. int dp[2020][2020];
  5. void find(int n,int m){
  6.     int mx=0,st,en;
  7.     for(int i=0;i<=n;i++){
  8.         for(int j=0;j<=m;j++){
  9.             if(i==0||j==0){dp[i][j]=0;}
  10.             else if(a[i-1]==b[j-1]){
  11.                 dp[i][j]=1+dp[i-1][j-1];
  12.                 if(mx<dp[i][j]){
  13.                     mx=dp[i][j];
  14.                     st=i; en=j;
  15.                 }
  16.             }
  17.             else{dp[i][j]=0;}
  18.         }
  19.     }
  20.     while(dp[st][en]!=0){
  21.         ans=a[st-1]+ans; st--;en--;
  22.     }
  23.     cout<<ans;
  24.     return;
  25. }
  26.  
  27. int main(){
  28.     cin>>a; cin>>b;
  29.  
  30.     find(a.size(),b.size());
  31.  
  32.     return 0;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement