Buy & Sell Stocks with Cooldown

PHOTO EMBED

Sun Jun 23 2024 14:10:43 GMT+0000 (Coordinated Universal Time)

Saved by @ayushg103 #c++

int f(int ind,int buy, vector<int>& nums ,vector<vector<int>>& dp )
{
    if(ind==(nums.size()))
    return 0;
    if(dp[ind][buy]!=-1)
    return dp[ind][buy];
    int profit;
    if(buy)
    profit = max((-nums[ind]+f(ind+1,0,nums,dp)),(f(ind+1,1,nums,dp)));
    else
    profit = max((nums[ind]+f(ind+2,1,nums,dp)),(f(ind+1,0,nums,dp)));
    return dp[ind][buy]=profit;
}
    int maxProfit(vector<int>& prices) {
        int n = prices.size();
         vector<vector<int>> dp(n,vector<int>(2,-1));
         return f(0,1,prices,dp);
        
    }
content_copyCOPY

The main reason of writing this code is that is about maintaining base case when (as we used f(ind+2) ) you were trying to put different conditions but the simple condition is instead of ind==n use ind>=n