Skip to content

Commit 911ca1b

Browse files
authored
Unbounded Knapsack.cpp
1 parent 1d7159d commit 911ca1b

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

Unbounded Knapsack.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/* Unbounded Knapsack Problem */
2+
3+
#include <bits/stdc++.h>
4+
using namespace std;
5+
#define int long long int
6+
#define fast \
7+
cin.sync_with_stdio(false); \
8+
cin.tie(NULL); \
9+
cout.tie(NULL);
10+
11+
int dp[1001][10001];
12+
13+
int knapsack(int n, int wt[], int val[], int W)
14+
{
15+
if (n == 0 || W == 0)
16+
return 0;
17+
18+
if (dp[n][W] != -1)
19+
return dp[n][W];
20+
if (wt[n - 1] <= W)
21+
return dp[n][W] = max(val[n - 1] + knapsack(n, wt, val, W - wt[n - 1]), knapsack(n - 1, wt, val, W));
22+
else
23+
return dp[n][W] = knapsack(n - 1, wt, val, W);
24+
}
25+
signed main()
26+
{
27+
fast;
28+
int n = 4;
29+
int wt[4] = {1, 3, 4, 5};
30+
int val[4] = {10, 40, 50, 70};
31+
32+
int W = 8;
33+
//memonization
34+
memset(dp, -1, sizeof(dp));
35+
cout << knapsack(n, wt, val, W);
36+
return 0;
37+
}

0 commit comments

Comments
 (0)