input: Write a function to calculate the maximum possible revenue from items with given weights and values using a knapsack approach. The function should take as input a list of weights, a list of values, and the total capacity of the knapsack. If the input lists are empty, the function should return 0.
  assert knapsack([2, 1, 3], [4, 2, 3], 3)==7
  assert knapsack([1, 2, 3], [6, 10, 12], 5)==22
  assert knapsack([1, 1, 1], [1, 3, 4], 2)==7
  assert knapsack([2, 2, 2], [3, 4, 5], 3)==5
  assert knapsack([], [], 0)==0
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]