Advertisement
lodha1503

Untitled

Aug 25th, 2023
744
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.65 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. int memo(vector<int> &nums,int n,int ind,int taken, vector<vector<int>> &dp)
  4. {
  5.     if(ind<0)
  6.         return 0;
  7.    
  8.     if(dp[taken][ind]!=-1)
  9.         return dp[taken][ind];
  10.        
  11.     int ans=0;
  12.     if(taken==0)
  13.     {
  14.         int x=nums[ind]+memo(nums,n,ind-1,1,dp);
  15.         int y=memo(nums,n,ind-1,0,dp);
  16.         ans=max(x,y);
  17.     }
  18.     else
  19.         ans=memo(nums,n,ind-1,0,dp);
  20.    
  21.  
  22.     dp[taken][ind]=ans;
  23.     return ans;
  24.  
  25. }
  26. int maximumNonAdjacentSum(vector<int> &nums)
  27. {
  28.     int n=nums.size();
  29.     vector<vector<int>> dp(2,vector<int>(n,-1));
  30.     return max(memo(nums,n,n-1,0,dp),memo(nums,n,n-1,1,dp));
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement