@@ -7,39 +7,39 @@ int t[D][D]; // DP matrix
7
7
8
8
int Knapsack (int wt[], int val[], int W, int n) {
9
9
// base case
10
- if (n == 0 || W == 0 )
10
+ if (n == 0 || W == 0 ) {
11
11
return 0 ;
12
-
12
+ }
13
13
// if already calculated
14
- if (t[n][W] != -1 )
15
- return t[n][W];
16
-
17
- // else calculate
18
- else {
19
- if (wt[n - 1 ] <= W)
20
- t[n][W] = max (val[n - 1 ] + Knapsack (wt, val, W - wt[n - 1 ], n - 1 ),Knapsack (wt, val, W, n - 1 ));
21
- else if (wt[n - 1 ] > W)
22
- t[n][W] = Knapsack (wt, val, W, n - 1 );
23
-
14
+ if (t[n][W] != -1 ) {
24
15
return t[n][W];
25
16
}
17
+ if (wt[n - 1 ] <= W) {
18
+ t[n][W] = max (val[n - 1 ] + Knapsack (wt, val, W - wt[n - 1 ], n - 1 ),Knapsack (wt, val, W, n - 1 ));
19
+ } else if (wt[n - 1 ] > W) {
20
+ t[n][W] = Knapsack (wt, val, W, n - 1 );
21
+ }
22
+ return t[n][W];
26
23
}
27
24
28
25
signed main () {
29
26
int n; cin >> n; // number of items
30
27
int val[n], wt[n]; // values and wts array
31
- for (int i = 0 ; i < n; i++)
28
+ for (int i = 0 ; i < n; i++) {
32
29
cin >> wt[i];
33
- for (int i = 0 ; i < n; i++)
30
+ }
31
+ for (int i = 0 ; i < n; i++) {
34
32
cin >> val[i];
33
+ }
35
34
int W;
36
35
cin >> W; // capacity
37
36
38
37
// matrix initialization
39
- for (int i = 0 ; i <= n; i++)
40
- for (int j = 0 ; j <= W; j++)
38
+ for (int i = 0 ; i <= n; i++) {
39
+ for (int j = 0 ; j <= W; j++) {
41
40
t[i][j] = -1 ; // initialize matrix with -1
42
-
41
+ }
42
+ }
43
43
cout << Knapsack (wt, val, W, n) << endl;
44
44
return 0 ;
45
- }
45
+ }
0 commit comments