You've seen 0/1 knapsack (each item once) and unbounded knapsack (unlimited copies). Bounded knapsack sits in between: each item has a limit on how many copies you can take. The naive approach: treat item as separate items and run 0/1 knapsack.
But if for many items, this explodes. There's a clever trick using binary representation that reduces copies to items. I'll show you how.