Manioc

knapsack

Jun 21st, 2018
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.86 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define MAX 10007
  3.  
  4. using namespace std;
  5.  
  6. int dp[MAX][MAX], pesos[MAX], val[MAX], p, v, dp2[MAX];
  7.  
  8. int knapsack(int pos, int pesoDisponivel){
  9.     if(pos >= n) return 0;
  10.     if(pesoDisponivel <= 0) return 0;
  11.     if(dp[pos][pesoDisponivel] != -1) return dp[pos][pesoDisponivel];
  12.  
  13.     int inclue, naoInclue;
  14.  
  15.     if(pesos[pos] <= pesoDisponivel) inclue = knapsack(pos+1, pesoDisponivel - pesos[pos]) + val[pos];
  16.     else inclue = 0;
  17.  
  18.     naoInclue = knapsack(pos+1, pesoDisponivel);
  19.     return dp[pos][pesoDisponivel] = max(inclue, naoInclue);
  20. }
  21.  
  22. int ubd(int general){
  23.     for(int tam = 0; tam <= general; tam++){
  24.         for(int item = 0; item < v; item++){
  25.             if(pesos[item-1] <= tam) dp2[tam] = max(dp2[tam], dp2[tam-peso[item]] + val[item]);
  26.         }
  27.     }
  28.  
  29.     return dp2[general];
  30. }
  31. int main(){
  32.     return 0;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment