ROD CUTTING MEMOIZATION APPROACH ACCORDANCE WITH UNBOUNDED KNAPSACK.
class Solution{
  public:
  
    int cut(int val[],int wt[],int n,int W,vector<vector<int>>&t)
    {
        if(t[n][W]!=-1)
        {
            return t[n][W];
        }
        if(wt[n-1]<=W)
        {
            return(t[n][W]=max(val[n-1]+cut(val,wt,n,W-wt[n-1],t),cut(val,wt,n-1,W,t)));
            
        }
        else
        {
            return(t[n][W]=cut(val,wt,n-1,W,t));
        }
    }
  
  
    int cutRod(int val[], int n) {
        
        vector<vector<int>>t(n+1,vector<int>(n+1,-1));
        for(int i=0;i<=n;i++)
        {
            for(int j=0;j<=n;j++)
            {
                if(i==0 || j==0)
                {
                    t[i][j]=0;
                }
            }
        }
        int wt[n]={0};
        for(int i=1;i<=n;i++)
        {
            wt[i-1]=i;
        }
        int W=n;
        return(cut(val,wt,n,W,t));
        
    }
};
Comments (0)