Shiam7777777

Untitled

Jan 21st, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | None | 0 0
  1. // A Dynamic Programming based solution for 0-1 Knapsack problem
  2. #include<stdio.h>
  3.  
  4. // A utility function that returns maximum of two integers
  5. int max(int a, int b) { return (a > b)? a : b; }
  6.  
  7. // Returns the maximum value that can be put in a knapsack of capacity W
  8. int knapSack(int W, int wt[], int val[], int n)
  9. {
  10.    int i, w;
  11.    int K[n+1][W+1];
  12.  
  13.    // Build table K[][] in bottom up manner
  14.    for (i = 0; i <= n; i++)
  15.    {
  16.        for (w = 0; w <= W; w++)
  17.        {
  18.            if (i==0 || w==0)
  19.                K[i][w] = 0;
  20.            else if (wt[i-1] <= w)
  21.                  K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]],  K[i-1][w]);
  22.            else
  23.                  K[i][w] = K[i-1][w];
  24.        }
  25.    }
  26.  
  27.    return K[n][W];
  28. }
  29.  
  30. int main()
  31. {
  32.     int val[] = {60, 100, 120};
  33.     int wt[] = {10, 20, 30};
  34.     int  W = 50;
  35.     int n = sizeof(val)/sizeof(val[0]);
  36.     printf("%d", knapSack(W, wt, val, n));
  37.     return 0;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment