Advertisement
Mr_TRex

Knapsack dp

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