Advertisement
Singasking

Untitled

Jan 19th, 2023
1,191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. class Solution {
  3. public:
  4.  
  5.     int f(int i1,int i2,string text1,string text2,vector<vector<int>> &dp) {
  6.         if(i1==0 or i2==0) return 0;
  7.         if(dp[i1][i2]!=-1) return dp[i1][i2];
  8.  
  9.         if(text1[i1-1]==text2[i2-1]) return dp[i1][i2]= 1 + f(i1-1,i2-1,text1,text2,dp);
  10.         return dp[i1][i2]= max(f(i1-1,i2,text1,text2,dp),f(i1,i2-1,text1,text2,dp));
  11.  
  12.     }
  13.     int longestCommonSubsequence(string text1, string text2) {
  14.        
  15.         vector<vector<int>> dp(text1.length()+2,vector<int>(text2.length()+2,-1));
  16.         int n = text1.length();
  17.         int m = text2.length();
  18.         for(int i=0;i<=n;i++) dp[i][0]=0;
  19.          for(int i=0;i<=m;i++) dp[0][i]=0;
  20.          for(int i=1;i<=n;i++) {
  21.              for(int j=1;j<=m;j++) {
  22.                  if(text1[i-1]==text2[j-1]) { dp[i][j] = 1 + dp[i-1][j-1];
  23.                  }
  24.                  else {
  25.                      dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
  26.                  }
  27.              }
  28.          }
  29.         return dp[n][m];
  30.  
  31.     }
  32. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement