MCPcopy Create free account
hub / github.com/PrajaktaSathe/Java / KnapSack

Class KnapSack

Programs/KnapSack.java:3–59  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1//Program to implement 0-1 Knapsack using DYNAMIC PROGRAMMING
2import java.util.*;
3public class KnapSack
4{
5 public int max(int a, int b)
6 {
7 return (a > b)?a:b;
8 }
9
10 public int knapSack(int W, int wt[], int val[], int n)
11 {
12 int i, w;
13 int[][] K = new int[n+1][W+1];
14 for(i=0; i<=n; i++)
15 {
16 for(w=0; w<=W; w++)
17 {
18 if(i == 0 || w == 0)
19 {
20 K[i][w] = 0;
21 }
22 else if(wt[i-1] <= w)
23 {
24 K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]], K[i-1][w]);
25 }
26 else
27 {
28 K[i][w] = K[i-1][w];
29 }
30 }
31 }
32 return K[n][W];
33 }
34
35 public static void main(String[] args)
36 {
37 int i, n, W;
38 Scanner sc = new Scanner(System.in);
39 System.out.println("Enter the number of items : ");
40 n = sc.nextInt();
41 System.out.println("Enter the maximum weight/capacity : ");
42 W = sc.nextInt();
43 int wt[] = new int[n];
44 int val[] = new int[n];
45 System.out.println("Enter the weights of the items : ");
46 for(i=0; i<n; i++)
47 {
48 wt[i] = sc.nextInt();
49 }
50 System.out.println("Enter their corresponding values : ");
51 for(i=0; i<n; i++)
52 {
53 val[i] = sc.nextInt();
54 }
55 KnapSack ob = new KnapSack();
56 int res = ob.knapSack(W, wt, val, n);
57 System.out.println("Total profit : "+res);
58 }
59}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected