input: Write a function to calculate the maximum possible revenue from the items with given weights and values. The function should take three parameters: weights, values, and the total capacity of the knapsack. The function should return the maximum revenue that can be achieved by selecting items such that the total weight does not exceed the given capacity.
  assert knapsack([2, 1, 3], [4, 2, 3], 5)==7
  assert knapsack([1, 2, 3], [6, 10, 12], 5)==30
  assert knapsack([4, 5, 1], [1, 2, 3], 4)==4
  assert knapsack([1, 3, 4, 5], [1, 4, 5, 7], 7)==9
  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]