input: Write a function to calculate the maximum possible revenue from items with given weights and values using the knapsack problem approach. The function should return the maximum revenue possible given the constraints of weights and values. If the weights or values list is empty, the function should return 0.
  assert knapsack([2, 1, 3], [4, 2, 3], 3)==7
  assert knapsack([1, 2, 3], [6, 10, 12], 3)==22
  assert knapsack([1, 3, 4, 5], [1, 4, 5, 7], 4)==9
  assert knapsack([], [], 0)==0
  assert knapsack([1, 2], [1, 2], 2)==3
output: def knapsack(weights, values, capacity):
      if not weights or not values:
          return 0
      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]