input: Write a function to calculate the maximum possible revenue from a list of items with given weights and values. The function should use the knapsack approach to determine the maximum revenue when the total capacity of the knapsack is given.
  assert knapsack([2, 1, 3], [4, 2, 3], 3)==7
  assert knapsack([1, 2, 3], [6, 10, 12], 3)==22
  assert knapsack([1, 1, 1], [10, 20, 30], 3)==60
  assert knapsack([2, 3, 4], [3, 4, 5], 3)==7
  assert knapsack([], [], 0)==0
output: def knapsack(weights, values, capacity):
      n = len(weights)
      dp = [[0] * (capacity + 1) for _ in range(n + 1)]
      
      for i in range(1, n + 1):
          for w in range(capacity + 1):
              if weights[i - 1] <= w:
                  dp[i][w] = max(dp[i - 1][w], dp[i - 1][w - weights[i - 1]] + values[i - 1])
              else:
                  dp[i][w] = dp[i - 1][w]
      
      return dp[n][capacity]