Advertisement
GerexD

greedy11

Feb 14th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. /**
  4. Adott egy hátizsák, amely legtöbb m súlyt bír el és n tárgy melyeknek ismerjük a súlyát és az értékét.
  5. Csomagoljuk be a hátizsákot úgy, hogy az érték maximális legyen.
  6. Pl: legyen m=40, n=6, súly=(20, 10, 4, 3, 6, 16) és érték=(60, 35, 4, 9, 12, 44)
  7. Ha rendezzük érték szerint:
  8. érték=(60, 44, 35, 12, 9, 4)
  9. súly=(20, 16, 10, 6, 3, 4)
  10. Megoldás: 20+16+3=39 és 60+44+9=113
  11.  
  12. Jobb megoldást kaphatunk, ha érték/súly szerint rendezzük:
  13. érték/súly=(3.5, 3, 3, 2.75, 2, 1)
  14. érték=(35, 60, 9, 44, 12, 4)
  15. súly=(10, 20, 3, 16, 6, 4)
  16. Megoldás: 10+20+3+6=39 és 35+60+9+12=116
  17. */
  18.  
  19. using namespace std;
  20. struct targy
  21. {
  22. float s,e;
  23.  
  24. }a[50];
  25. void beolvas(targy a[], int &n, int &m)
  26. {
  27. ifstream f("hatizsak.be");
  28. f>>m>>n;
  29. for(int i=1;i<=n;i++)
  30. f>>a[i].s>>a[i].e;
  31. f.close();
  32. }
  33. void rendez (targy a[],int n)
  34. {
  35. int jo=1;
  36. int nn=n;
  37. do{
  38. jo=1;
  39. for(int i=1;i<=nn-1;i++)
  40. if(a[i].e/a[i].s<a[i+1].e/a[i+1].s)
  41. {
  42. targy x=a[i];
  43. a[i]=a[i+1];
  44. a[i+1]=x;
  45. jo=0;
  46. }
  47. nn--;
  48. }while(jo==0);
  49. }
  50. void moho(targy a[],int n,int m)
  51. {
  52. int i=1,os=0,oe=0;
  53. while(i<=n && m>0)
  54. {
  55. if(a[i].s<=m)
  56. {
  57. cout<<a[i].s<<" "<<a[i].e<<endl;
  58. os=os+a[i].s;
  59. oe=oe+a[i].e;
  60. m=m-a[i].s;
  61. }
  62. i++;
  63. }
  64. if(m>0) cout<<"A zsakban meg marad: "<<m<<endl;
  65. else cout<<"A zsak megtelt!"<<endl;
  66. cout<<oe<<" ertek van a zsakban!"<<endl;
  67. cout<<os<<" suly van a zsakban!"<<endl;
  68.  
  69. }
  70. int main()
  71. { int n,m;
  72. beolvas(a,n,m);
  73. rendez(a,n);
  74. moho(a,n,m);
  75.  
  76.  
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement