Guest User

Untitled

a guest
Jun 25th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. void CompletePack(int weight, int value){
  2. for (int i = weight; i <= half_value; i++){
  3. dp[i] = max(dp[i], dp[i - weight] + value);
  4. if (dp[i] == half_value){
  5. flag = 1;
  6. return;
  7. }
  8. }
  9. return;
  10. }
  11.  
  12. void ZeroOnePack(int weight, int value){
  13. for (int i = half_value; i >= weight; i--){
  14. dp[i] = max(dp[i], dp[i - weight] + value);
  15. if (dp[i] == half_value){
  16. flag = 1;
  17. return;
  18. }
  19. }
  20. return;
  21. }
  22.  
  23. void MultiplePack(int weight, int value, int amount){
  24. if (weight * amount >= half_value){
  25. CompletePack(weight, value);
  26. return;
  27. }
  28. if (flag) return;
  29. int k = 1;
  30. while(k <= amount){
  31. ZeroOnePack(k * weight, k * value);
  32. if (flag) return;
  33. amount -= k;
  34. k *= 2;
  35. }
  36. ZeroOnePack(amount * weight, amount * value);
  37. return;
  38. }
Add Comment
Please, Sign In to add comment