Advertisement
apl-mhd

0/1 knapsack

Jul 21st, 2017
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.79 KB | None | 0 0
  1. // A Dynamic Programming based solution for 0-1 Knapsack problem
  2. #include<stdio.h>
  3. #include <iostream>
  4. #include <algorithm>
  5. #include <limits>
  6.  
  7. using namespace std;
  8.  
  9.  
  10. void knapSack(int val[], int wt[], int n, int W){
  11.    
  12.        
  13.         int dp[5][8]={0};
  14.        
  15.        
  16.        
  17.         for(int i=1; i<=4; i++){
  18.            
  19.             for(int w=1; w<=W; w++){
  20.                
  21.                 if(wt[i-1] <=w)
  22.                    
  23.                     dp[i][w] = max(val[i-1]+dp[i-1][w-wt[i-1]], dp[i-1][w]);
  24.                    
  25.                 else
  26.                
  27.                 dp[i][w] = dp[i-1][w];
  28.                
  29.                 }
  30.                    
  31.            
  32.             }
  33.  
  34.  
  35.    
  36.     for (int i = 0; i <= n; i++)
  37.     {
  38.         for (int w = 0; w <= W; w++)
  39.         {
  40.            cout<<dp[i][w]<<" ";
  41.         }
  42.         cout<<"\n";
  43.     }
  44.        
  45.    
  46.     }
  47.  
  48. int main()
  49. {
  50.     int val[] = {1,4,5,7};
  51.     int wt[] = {1,3,4,5};
  52.  
  53.     knapSack(val, wt, 4, 7);
  54.    
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement