input: Write a function to calculate the maximum possible revenue from the items with given weights and values. Return the maximum revenue as an integer. If there are no items or no weight capacity, return 0.
  assert knapsack([2, 1, 3], [4, 2, 3], 3)==7
  assert knapsack([1, 2, 3], [2, 4, 6], 3)==8
  assert knapsack([1, 2], [2, 3], 2)==5
  assert knapsack([], [], 0)==0
  assert knapsack([1, 2, 3], [2, 4, 6], 0)==0
output: def knapsack(weights, values, capacity):
      n = len(weights)
      if n == 0 or capacity == 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]