Advertisement
Guest User

plecaki

a guest
Nov 19th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.77 KB | None | 0 0
  1. #include <iostream>
  2. #include<stdio.h>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. int max(int a, int b)
  8. {
  9.     if(a > b)
  10.         return a;
  11.     else
  12.         return b;
  13. }
  14.  
  15. int knapSack(int W, int wt[], int val[], int n)
  16. {
  17.    int K[n+1][W+1];
  18.  
  19.    for (int i = 0; i <= n; i++)
  20.    {
  21.        for (int j = 0; j <= W; j++)
  22.        {
  23.            if (i==0 || j==0)
  24.                K[i][j] = 0;
  25.            else if (wt[i-1] <= j)
  26.                  K[i][j] = max(val[i-1] + K[i-1][j-wt[i-1]],  K[i-1][j]);
  27.            else
  28.                  K[i][j] = K[i-1][j];
  29.        }
  30.    }
  31.  
  32.    return K[n][W];
  33. }
  34.  
  35. int main()
  36. {
  37.     int val[] = {30, 500, 400};
  38.     int wt[] = {25, 10, 40};
  39.     int  W = 50;
  40.     int n = sizeof(val)/sizeof(val[0]);
  41.     printf("%d", knapSack(W, wt, val, n));
  42.     return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement