fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. #define ll long long
  5. ll recurs(string s ,string t, vector<vector<ll>> &dp,ll idx1=0,ll idx2=0) {
  6. if (idx1==s.size() || idx2==t.size()) {
  7. return 0;
  8. }
  9. if (dp[idx1][idx2]!=-1) {
  10. return dp[idx1][idx2];
  11. }
  12. if (s[idx1]==t[idx2]) {
  13. return dp[idx1][idx2]=1+recurs(s, t, dp, idx1+1, idx2+1);
  14. }
  15. else
  16. return dp[idx1][idx2]=max(recurs(s,t,dp,idx1+1,idx2),recurs(s,t,dp,idx1,idx2+1));
  17. }
  18. void solve() {
  19. string s; string t;
  20. cin >> s>>t;
  21. ll n=s.length();
  22. ll m =t.length();
  23. vector<vector<ll>>dp(n+1,vector<ll>(m+1,-1));
  24. cout<<recurs(s,t,dp);
  25. }
  26.  
  27. signed main() {
  28. ll t=1;
  29. // cin>>t;
  30. while(t--) {
  31. solve();
  32. }
  33. return 0;
  34. }
Success #stdin #stdout 0.01s 5300KB
stdin
Standard input is empty
stdout
Standard output is empty