Unbounded Knapsack

Problem Link: https://practice.geeksforgeeks.org/problems/knapsack-with-duplicate-items4201/1

class Solution:
    def knapSack(self, n, W, val, wt):
        # code here
        dp=[[0 for i in range(W+1)] for j in range(n+1)]
        for i in range(n+1):
            for j in range(W+1):
                if(i==0 or j==0):
                    dp[i][j]=0
                else:
                    if(wt[i-1]<=j):
                        inc=val[i-1]+dp[i][j-wt[i-1]]
                        exc=dp[i-1][j]
                        dp[i][j]=max(inc,exc)
                    else:
                        exc=dp[i-1][j]
                        dp[i][j]=exc
        return dp[n][W]

Last updated