Advertisement
Guest User

Untitled

a guest
Aug 21st, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. //Wykonanie by Grzegorz Bogusław Zaleski
  4. using namespace std;
  5.  
  6. /*
  7. 10 6
  8. 6 6
  9. 4 2
  10. 5 3
  11. 7 2
  12. 10 3
  13. 2 1
  14. */
  15.  
  16. int main()
  17. {
  18. int udzwig, przedmioty;
  19. cin >> udzwig >> przedmioty;
  20. int Values[przedmioty+1];
  21. int Weights[przedmioty+1];
  22. for (int i=1; i<=przedmioty; ++i)
  23. {
  24. cin >> Values[i] >> Weights[i];
  25. }
  26.  
  27.  
  28. int Plecak[przedmioty+1][udzwig+1];
  29. int Input[przedmioty+1][udzwig+1];
  30. for (int i=0; i<=przedmioty; i++)
  31. {
  32. for (int j=0; j<=udzwig; ++j)
  33. {
  34. if (i == 0 or j == 0)
  35. {
  36. Plecak[i][j] = 0;
  37. Input[i][j] = 0;
  38. }
  39.  
  40. else if (Weights[i] <= j)
  41. {
  42. Plecak[i][j] = max(Plecak[i-1][j-Weights[i]] + Values[i], Plecak[i-1][j]);
  43. Input[i][j] = 0;
  44. if (Plecak[i-1][j-Weights[i]] + Values[i] > Plecak[i-1][j]) Input[i][j] = 1;
  45. }
  46. else
  47. {
  48. Plecak[i][j] = Plecak[i-1][j];
  49. Input[i][j] = Input[i-1][j];
  50. }
  51. }
  52. }
  53. cout << "Max wartosc: " <<Plecak[przedmioty][udzwig] << endl;
  54.  
  55. int countdown = udzwig;
  56.  
  57. for (int i=przedmioty; i>-1; --i)
  58. {
  59. if (Input[i][countdown] == 1)
  60. {
  61. cout << "Wzieto przedmiot nr " << i << endl;
  62. countdown -= Weights[i];
  63. }
  64. }
  65.  
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement