How would you modify classic dynamic programming knapsack


Problem

In C++,

How would you modify the classic dynamic programming knapsack 0/1 problem to allow taking up to 2 of an item?

For reference here is the standard way provided by geeks for geeks:
// A dynamic programming based
// solution for 0-1 Knapsack problem
#include
using namespace std;
// A utility function that returns
// maximum of two integers
int max(int a, int b)
{
return (a > b) ? a : b;
}
// Returns the maximum value that
// can be put in a knapsack of capacity W
int knapSack(int W, int wt[], int val[], int n)
{
int i, w;
vector> K(n + 1, vector(W + 1));
// Build table K[][] in bottom up manner
for(i = 0; i <= n; i++)
{
for(w = 0; w <= W; w++)
{
if (i == 0 || w == 0)
K[i][w] = 0;
else if (wt[i - 1] <= w)
K[i][w] = max(val[i - 1] +
K[i - 1][w - wt[i - 1]],
K[i - 1][w]);
else
K[i][w] = K[i - 1][w];
}
}
return K[n][W];
}
// Driver Code
int main()
{
int val[] = { 60, 100, 120 };
int wt[] = { 10, 20, 30 };
int W = 50;
int n = sizeof(val) / sizeof(val[0]);
cout << knapSack(W, wt, val, n);
return 0;
}

Request for Solution File

Ask an Expert for Answer!!
C/C++ Programming: How would you modify classic dynamic programming knapsack
Reference No:- TGS03255354

Expected delivery within 24 Hours