Dynamic Programming Multidimensional Knapsack Problems