input: Write a function to calculate the maximum possible revenue from the items with given weights and values. The function should use the knapsack algorithm to determine the maximum value that can be obtained with a given capacity. If the input arrays are empty, return 0.
  assert knapsack([2, 1, 3], [4, 2, 3], 3)==5
  assert knapsack([1, 2, 3], [6, 10, 12], 3)==22
  assert knapsack([], [], 0)==0
  assert knapsack([1, 1, 1], [1, 1, 1], 3)==2
  assert knapsack([1, 2, 3, 4], [1, 4, 5, 7], 4)==9
output: def knapsack(weights, values, capacity):
      n = len(weights)
      if n == 0:
          return 0
      dp = [[0] * (capacity + 1) for _ in range(n + 1)]
      for i in range(1, n + 1):
          for w in range(1, 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]