fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. int knapsack(int W, vector<int> wt, vector<int> val, int n) {
  7. vector<vector<int>> K(n+1, vector<int>(W+1, 0));
  8. for(int i=1;i<=n;i++){
  9. for(int w=1;w<=W;w++){
  10. if(wt[i-1]<=w)
  11. K[i][w]=max(val[i-1]+K[i-1][w-wt[i-1]],K[i-1][w]);
  12. else
  13. K[i][w]=K[i-1][w];
  14. }
  15. }
  16. return K[n][W];
  17. }
  18.  
  19. int main(){
  20. int n=5, W=20;
  21. vector<int> val={5,7,8,10,12};
  22. vector<int> wt ={5,4,7,10,8};
  23.  
  24. cout<<"Hasil maksimum: "<<knapsack(W,wt,val,n)<<endl;
  25. return 0;
  26. }
  27.  
Success #stdin #stdout 0.01s 5288KB
stdin
5 
5 4 7 8 10 
10 5 7 12 8 
20
stdout
Hasil maksimum: 27