Five_NT

[C++]Probl. rucsacului

Oct 31st, 2013
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #include <iostream.h>
  2. #include <fstream.h>
  3. using namespace std;
  4. struct rucsac
  5. {
  6.     int nr;
  7.     float g, c, ef;
  8. }a[50];
  9.  
  10. int n, m, s[50];
  11. float Gr, x[50];
  12.  
  13. ifstream f("rucsac.in");
  14. void citire()
  15. {
  16.     int i;
  17.     f>>Gr>>n;
  18.     for(i=1; i<=n; i++)
  19.     {
  20.         f>>a[i].g;
  21.         f>>a[i].c;
  22.         a[i].ef=a[i].c/a[i].g;
  23.         a[i].nr=i;
  24.     }
  25.     f.close();
  26. }
  27.  
  28. void ordonare()
  29. {
  30.     int i, j;
  31.     rucsac aux;
  32.     for(i=1; i<n; i++)
  33.         for(j=i+1; j<=n; j++)
  34.             if(a[i].ef<a[i].ef)
  35.             {
  36.                 aux=a[i];
  37.                 a[i]=a[j];
  38.                 a[j]=aux;
  39.             }
  40. }
  41.  
  42. void greedy()
  43. {
  44.     int i, j=0;
  45.     i=1;
  46.     while(i<=n && Gr!=0)
  47.     {
  48.         if(Gr>a[i].g)
  49.         {
  50.             j++;
  51.             s[j]=i;
  52.             Gr=Gr-a[i].g;
  53.             x[j]=1;
  54.         }
  55.         else
  56.         {
  57.             j++;
  58.             s[j]=i;
  59.             x[j]=Gr/a[i].g;
  60.             Gr=0;
  61.         }
  62.         i++;
  63.     }
  64.     m=j;
  65. }
  66. void afis()
  67. {
  68.     int i;
  69.     cout<<"Obiece introduce in rucsas: "<<endl;
  70.     for(i=1; i<=m; i++)
  71.         cout<<"Obiectul nr. "<<a[s[i]].nr<<" de greutate "<<x[i]*a[s[i]].g<<" "<<endl;
  72.     cout<<endl;
  73. }
  74.  
  75. int main()
  76. {
  77.     citire();
  78.     ordonare();
  79.     greedy();
  80.     afis();
  81.     return 0;
  82. }
  83.  
  84.  
  85.  
  86.  
  87. /* rucsac.in */
  88. 20 5
  89. 5 10
  90. 4 20
  91. 4 10
  92. 8 10
  93. 10 22
Advertisement
Add Comment
Please, Sign In to add comment