Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream.h>
- #include <fstream.h>
- using namespace std;
- struct rucsac
- {
- int nr;
- float g, c, ef;
- }a[50];
- int n, m, s[50];
- float Gr, x[50];
- ifstream f("rucsac.in");
- void citire()
- {
- int i;
- f>>Gr>>n;
- for(i=1; i<=n; i++)
- {
- f>>a[i].g;
- f>>a[i].c;
- a[i].ef=a[i].c/a[i].g;
- a[i].nr=i;
- }
- f.close();
- }
- void ordonare()
- {
- int i, j;
- rucsac aux;
- for(i=1; i<n; i++)
- for(j=i+1; j<=n; j++)
- if(a[i].ef<a[i].ef)
- {
- aux=a[i];
- a[i]=a[j];
- a[j]=aux;
- }
- }
- void greedy()
- {
- int i, j=0;
- i=1;
- while(i<=n && Gr!=0)
- {
- if(Gr>a[i].g)
- {
- j++;
- s[j]=i;
- Gr=Gr-a[i].g;
- x[j]=1;
- }
- else
- {
- j++;
- s[j]=i;
- x[j]=Gr/a[i].g;
- Gr=0;
- }
- i++;
- }
- m=j;
- }
- void afis()
- {
- int i;
- cout<<"Obiece introduce in rucsas: "<<endl;
- for(i=1; i<=m; i++)
- cout<<"Obiectul nr. "<<a[s[i]].nr<<" de greutate "<<x[i]*a[s[i]].g<<" "<<endl;
- cout<<endl;
- }
- int main()
- {
- citire();
- ordonare();
- greedy();
- afis();
- return 0;
- }
- /* rucsac.in */
- 20 5
- 5 10
- 4 20
- 4 10
- 8 10
- 10 22
Advertisement
Add Comment
Please, Sign In to add comment