Jest takie zadanie "W budynku mieszkalnym znajduje się winda, której maksymalne obciążenie to 900 kg. Z windy chce skorzystać pewnia liczba osób, w tym:
- 2 osoby o wadze 52 kg i wzroście 160 cm
- 1 osoba o wadze 52 kg i wzroście 158 cm
- 4 osoby o wadze 27 kg i wzroście 125 cm
- 2 osoby o wadze 102 kg i wzroście 180 cm
- 4 osoby o wadze 78 kg i wzroście 172 cm
- 3 osoby o wadze 64 kg i wzroście 160 cm
- 2 osoby o wadze 64 kg i wzroście 170 cm
- 3 osoby o wadze 47 kg i wzroście 150 cm
- 4 osoby o wadze 92 kg i wzroście 179 cm
Ile osób i o jakiej wadze powinno wsiąść do windy w pierwszej kolejności, aby całkowita suma ich wysokości (czyli wzrostu) była największa? Podaj specyfikację zadania oraz zaproponuj algorytm rozwiązujący ten problem metodą zachłanną i zapisz go w postaci programu."
A to mój program:
using namespace std;
int main()
{
int wagawindy=900;
int wagi[25]= {52,52,52,27,27,27,27,102,102,78,78,78,78,64,64,64,64,64,47,47,47,92,92,92,92};
int wzrost[25]= {160,160,158,125,125,125,125,180,180,172,172,172,172,160,160,160,170,170,150,150,150,179,179,179,179};
float proporcje[25];
for(int i=0; i<25; i++) proporcje[i]=wzrost[i]/wagi[i];
int zamiana;
do
{
zamiana=0;
for (int i=0; i<25; i++)
{
if (proporcje[i]>proporcje[i+1])
{
zamiana=zamiana+1;
swap(proporcje[i],proporcje[i+1]);
swap(wagi[i],wagi[i+1]);
swap(wzrost[i],wzrost[i+1]);
}
}
}
while(zamiana!=0);
cout<<" do windy zmieści się osoba o: ";
for(int k=0; k<25; k++)
if(wagi[k]<wagawindy)
{
wagawindy-=wagi[k];
cout<<"wadze"<<wagi[k]<<" i "<<"wzroscie"<<wzrost[k]<<endl;
};
return 0;
}
`
Czy dobrze zrobiłam to zadanie? Możnaby to zrobić jakoś prościej?