Given a set of items with specific weights and values, implement a solution based on the classic Knapsack problem using dynamic programming.