Advertisement
Guest User

tamasback'

a guest
Jan 23rd, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. int N,K,H[25],T[25],E[25];///targy szam(N) + kapacitas(K) + targyak(T) + ertekek(E) + verem(H)
  7. int sT[25];///taskaban levok ossztomege
  8. int sE[25];///taskaban levok osszerteke
  9. int db;
  10. int opt;
  11. int osszT,osszE;
  12. ifstream f("adat.be");
  13.  
  14. void Olvas()
  15. {
  16. f>>N>>K;
  17. for(int i=1;i<=N;i++)
  18. f>>T[i]>>E[i];
  19. f.close();
  20. }
  21.  
  22. void Mutat()
  23. {
  24. if(sE[N]>=opt)
  25. {
  26. opt=sE[N];
  27. db++;cout<<db<<"."<<endl;
  28. cout<<"Index: ";
  29. for(int i=1;i<=N;i++)
  30. {
  31. cout.width(4);
  32. cout<<i;
  33. }
  34. cout<<endl;
  35.  
  36. cout<<"Tomeg: ";
  37. for(int i=1;i<=N;i++)
  38. {
  39. cout.width(4);
  40. cout<<T[i];
  41. }
  42. cout<<endl;
  43.  
  44. cout<<"Ertek: ";
  45. for(int i=1;i<=N;i++)
  46. {
  47. cout.width(4);
  48. cout<<E[i];
  49. }
  50. cout<<endl;
  51.  
  52. cout<<"Zsak: ";
  53. for(int i=1;i<=N;i++)
  54. {
  55. cout.width(4);
  56. cout<<H[i];
  57. }
  58. cout<<endl;
  59.  
  60. cout<<"Ossztomeg: "<<sT[N]<<" "<<"Osszertek: "<<sE[N]<<endl<<endl;
  61. }
  62. }
  63.  
  64. int megoldas(int k)
  65. {
  66. return (k>N);
  67. }
  68.  
  69. int Jo(int k)
  70. {
  71. return (sT[k]<=k);
  72. }
  73.  
  74. void Back(int k)
  75. {
  76. if(megoldas(k))
  77. Mutat();
  78. else
  79. for(int i=0;i<=1;i++)
  80. {
  81. H[k]=i;
  82. sT[k]=sT[k-1]+T[k]*i;
  83. sE[k]=sE[k-1]+E[k]*i;
  84. if(Jo(k))
  85. Back(k+1);
  86. }
  87. }
  88.  
  89. void Csere(int i, int j)
  90. {
  91. int s=T[i];T[i]=T[j];T[j]=s;
  92. s=E[i];E[i]=E[j];E[j]=s;
  93. }
  94.  
  95. void Rendez()
  96. {
  97. for(int i=1;i<=N;i++)
  98. for(int j=i+1;j<=N;j++)
  99. if(E[i]/T[i]<E[j]/T[j])
  100. Csere(i,j);
  101. }
  102.  
  103. int valogat(int p)
  104. {
  105. while(osszT+T[p]>K && p<=N)
  106. p++;
  107. return p;
  108. }
  109.  
  110. void Moho()
  111. {
  112. int p=1;
  113. while(p<=N && osszT<=K)
  114. {
  115. int x=valogat(p);
  116. if(T[x]+osszT<=K && x<=N)
  117. {
  118. H[x]=1;
  119. osszT=T[x]+osszT;
  120. osszE=E[x]+osszE;
  121. p=x+1;
  122. }
  123. }
  124. sT[N]=osszT;sE[N]=osszE;
  125. }
  126.  
  127. int main()
  128. {
  129. Olvas();
  130. Mutat();
  131. //Back(1);
  132. Rendez();
  133. Mutat();
  134. Moho();
  135. Mutat();
  136. return 0;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement