## Description

Your assignment consists of implementing a dynamic programming solution to the 0-1

knapsack problem. Your solution must be stored in the DPKnapsack class. Your class is

required to have the following methods:

DPKnapsack(int capacity, String itemFile): a constructor to accept the default capacity and the

name of a data file as arguments. The data file will have several lines of the form below (the

first entry in each line is a string, the other two are integer values):

itemName itemWeight itemValue

int optimalWeight( ): returns the overall weight of the items in the optimal solution subset

int optimalNumber ( ): returns the number of items in the optimal solution subset

boolean contains(String item): returns true if item is in the optimal solution subset, false

otherwise

String solution( ): returns a string representing the optimal solution subset. The precise format

of the string is left to you. Output which is appropriately labeled and formatted will obviously

receive a better grade

In addition, the methods below, which overload the ones already presented, require that your

program solve the problem using the same items, but with a different knapsack capacity.

int optimalWeight(int maxWeight): returns the overall weight of the items in the optimal

solution subset for a knapsack with maxWeight.

int optimalNumber(int maxWeight): returns the number of items in the optimal solution subset

for a knapsack with maxWeight.

boolean contains(String item, int maxWeight): returns true if item is in the optimal solution

subset for a knapsack with maxWeight, false otherwise.

String solution(int maxWeight): returns a string representing the optimal solution subset for a

knapsack with maxWeight.

Naturally, you may develop additional private methods in the process of implementing your

solution, but the methods above are required. Your solution should be stored in the

DPKnapsack.java source file. Comments for your class and its methods should follow

javadoc guidelines. The source file DPKTest.java is provided to test some of the

functionality of your class. However, you probably want to design additional testing cases

before submitting your program for grading.

When done, place your DPKnapsack.java solution (as well as any other .java files you write) in

a .zip folder and submit it to Mimir for testing. Your .zip submission should contain neither

DPKTest.java nor any .txt files.