Md_hosen_zisad

knapsack1

Nov 26th, 2018
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. main()
  5. {
  6.     int i,j,n,w,b[10][10],d[10][10],wt[100],val[100];
  7.    cin>>n;
  8.    cin>>w;
  9.  
  10.     cout << "Given weight and benefit is shown below : " << endl;
  11.    for(i=1;i<=n;i++)
  12.     {
  13.         cin >>  wt[i] ;
  14.         cin  >> val[i];
  15.     }
  16.     for(i=0;i<=n;i++)
  17.     {
  18.         d[i][0]=0;
  19.     }
  20.     for(j=0;j<=w;j++)
  21.     {
  22.         d[0][j]=0;
  23.     }
  24.     for(i=1;i<=n;i++)
  25.     {
  26.         for(j=1;j<=w;j++)
  27.         {
  28.             if(wt[i]<=j)
  29.             {
  30.                 if(d[i-1][j]>val[i]+d[i-1][j-wt[i]])
  31.                 {
  32.                     d[i][j]=d[i-1][j];
  33.                     b[i][j]=0;
  34.                 }
  35.                 else
  36.                 {
  37.                     d[i][j]=val[i]+d[i-1][j-wt[i]];
  38.                     b[i][j]=1;
  39.                 }
  40.             }
  41.             else
  42.             {
  43.                 d[i][j]=d[i-1][j];
  44.                 b[i][j]=0;
  45.             }
  46.         }
  47.     }
  48.  
  49.     j=w;
  50.     for(i=1;i<=n;i++)
  51.     { if(j==0)
  52.     break;
  53.         if(b[i][j]==1)
  54.         {
  55.             cout << wt[i] << "kg = ";
  56.             cout << val[i] << endl;
  57.         }
  58.         j=j-wt[i];
  59.  
  60.     }
  61.     cout << "Maximum benefit is : " << d[n][w] << endl;
  62.  
  63.     return 0;
  64. }
Add Comment
Please, Sign In to add comment