Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- int N,K;//targyak szama, hatizsak kapacitasa
- int T[25],E[25];//tomegek es ertekek
- int H[25];// mit teszek a hatizsakba
- int sT[25];//a hatizsakban talalhato targyak tomege
- int sE[25];//a hatizsakban talalhato targyak erteke
- int db;
- int Optimalis;
- int OsszT=0,OsszE=0;
- void Olvas()
- {
- ifstream f("taska.txt");
- f>>K;f>>N;
- for(int i=1;i<=N;i++)
- {
- f>>T[i]>>E[i];
- }
- f.close();
- }
- void Mutat()
- {
- if(sE[N]>=Optimalis)
- {
- Optimalis=sE[N];
- db++;
- cout <<db<<"."<<endl;
- cout <<"Index: ";
- for(int i=1;i<=N;i++)
- {
- cout.width(4);
- cout<<i<<" ";
- }
- cout <<endl;
- cout <<"Tomeg: ";
- for(int i=1;i<=N;i++)
- {
- cout.width(4);
- cout<<T[i]<<" ";
- }
- cout <<endl;
- cout <<"Ertek: ";
- for(int i=1;i<=N;i++)
- {
- cout.width(4);
- cout<<E[i]<<" ";
- }
- cout <<endl;
- cout <<"Zsak: ";
- for(int i=1;i<=N;i++)
- {
- cout.width(4);
- cout<<H[i]<<" ";
- }
- cout <<endl;
- cout <<"Ossztomeg: "<<sT[N]<<" Osszertek: "<<sE[N]<<endl;
- }
- }
- int Megoldas(int k)
- {
- return(k>N);
- }
- int Jo(int k)
- {
- return(sT[k]<K);
- }
- void Csere(int i,int j)
- {
- int s=T[i];T[i]=T[j];T[j]=s;
- s=T[i];E[i]=E[j];E[j]=s;
- }
- void Rendez()
- {
- for(int i=1;i<=N;i++)
- for(int j=i+1;j<=N;i++)
- if(E[i]/T[i]<E[j]/T[j])
- Csere(i,j);
- }
- int Valogat(int p)
- {
- while(OsszT+T[p]>K && p<=N)
- p++;
- return p;
- }
- void Moho()
- {
- int p=1;
- while(p<=N && OsszT<=K)
- {
- int x=Valogat(p);
- if(OsszT+T[x]<=K && x<=N)
- {
- H[x]=1;
- OsszT=T[x]+OsszT;
- OsszE=E[x]+OsszE;
- p=x+1;
- }
- }
- sT[N]=OsszT;sE[N]=OsszE;
- }
- int main()
- {
- Olvas();
- Mutat();
- Rendez();
- Moho();
- Mutat();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement