input: Write a function to calculate the maximum possible revenue from items with given weights and values using the knapsack algorithm. The function should return the maximum revenue. 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, 2], [1, 5], 2)==6
  assert knapsack([], [], 0)==0
  assert knapsack([2], [3], 1)==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]