input: Write a function to calculate the maximum possible revenue from the items with given weights and values. The function should use a knapsack approach to determine the optimal selection of items that maximizes the total value without exceeding a given capacity. If the given weights and values are empty, return 0.
  def knapsack(weights, values, n): 
    
      # total capacity of knapsack 
      W = 5
    
      # matrix to store solution matrix 
      K = [[0 for x in range(W+1)] for x in range(n+1)] 
    
      # build the solution matrix in bottom up manner 
      for i in range(n+1): 
          for w in range(W+1): 
              if i==0 or w==0: 
                  K[i][w] = 0
              elif weights[i-1] <= w: 
                  K[i][w] = max(values[i-1] + K[i-1][w-weights[i-1]],  K[i-1][w]) 
              else: 
                  K[i][w] = K[i-1][w] 
    
      return K[n][W] 
  
  assert knapsack([2, 1, 3], [4, 2, 3], 3)==7
  assert knapsack([1, 2, 3], [1, 2, 3], 3)==5
  assert knapsack([5], [10], 1)==10
  assert knapsack([], [], 0)==0
output: def knapsack(weights, values, n): 
      W = 5
      if n == 0:
          return 0
      K = [[0 for x in range(W+1)] for x in range(n+1)] 
      for i in range(n+1): 
          for w in range(W+1): 
              if i==0 or w==0: 
                  K[i][w] = 0
              elif weights[i-1] <= w: 
                  K[i][w] = max(values[i-1] + K[i-1][w-weights[i-1]],  K[i-1][w]) 
              else: 
                  K[i][w] = K[i-1][w] 
      return K[n][W]