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