FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
Java/DynamicProgramming/MemoizationTechniqueKnapsack.java at master · kaishui/Java · GitHub
kaishui
/
Java
Public
forked from
TheAlgorithms/Java
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
Java
/
DynamicProgramming
/
MemoizationTechniqueKnapsack.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
56 lines (42 loc) · 1.38 KB
Breadcrumbs
Java
/
DynamicProgramming
/
MemoizationTechniqueKnapsack.java
Copy path
File metadata and controls
56 lines (42 loc) · 1.38 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package
DynamicProgramming
;
// Here is the top-down approach of
// dynamic programming
public
class
MemoizationTechniqueKnapsack
{
// A utility function that returns
// maximum of two integers
static
int
max
(
int
a
,
int
b
) {
return
(
a
>
b
) ?
a
:
b
;
}
// Returns the value of maximum profit
static
int
knapSackRec
(
int
W
,
int
wt
[],
int
val
[],
int
n
,
int
[][]
dp
) {
// Base condition
if
(
n
==
0
||
W
==
0
)
return
0
;
if
(
dp
[
n
][
W
] != -
1
)
return
dp
[
n
][
W
];
if
(
wt
[
n
-
1
] >
W
)
// Store the value of function call
// stack in table before return
return
dp
[
n
][
W
] =
knapSackRec
(
W
,
wt
,
val
,
n
-
1
,
dp
);
else
// Return value of table after storing
return
dp
[
n
][
W
] =
max
(
(
val
[
n
-
1
] +
knapSackRec
(
W
-
wt
[
n
-
1
],
wt
,
val
,
n
-
1
,
dp
)),
knapSackRec
(
W
,
wt
,
val
,
n
-
1
,
dp
));
}
static
int
knapSack
(
int
W
,
int
wt
[],
int
val
[],
int
N
) {
// Declare the table dynamically
int
dp
[][] =
new
int
[
N
+
1
][
W
+
1
];
// Loop to initially filled the
// table with -1
for
(
int
i
=
0
;
i
<
N
+
1
;
i
++)
for
(
int
j
=
0
;
j
<
W
+
1
;
j
++)
dp
[
i
][
j
] = -
1
;
return
knapSackRec
(
W
,
wt
,
val
,
N
,
dp
);
}
// Driver Code
public
static
void
main
(
String
[]
args
) {
int
val
[] = {
60
,
100
,
120
};
int
wt
[] = {
10
,
20
,
30
};
int
W
=
50
;
int
N
=
val
.
length
;
System
.
out
.
println
(
knapSack
(
W
,
wt
,
val
,
N
));
}
}
Back
|
FazBrowse Home
|
New Git URL