Optymalizacja wyjazdów pociągów

1

Witajcie. Na wstępie - to nie jest żadne zadanie na zaliczenie itp., sam sobie to wymyśliłem i nie wiem jak to ugryźć. Wybaczcie jeśli treść tego zadania nie ma rąk i nóg w prawdziwym życiu - chodzi mi jedynie o zamysł.

W zajezdni znajduje się bardzo dużo niepowtarzalnych pociągów. Każdy pociąg ma cztery cechy:

  • nazwę (np. Ugly Train)
  • pojemność ładunku (np. 45 ton)
  • ile czasu wyjeżdża z zajezdni (np. 4.28 minutes)
  • czas po jakim wróci do zajezdni (np. 210 minutes)

Na wejściu podaję liczbę N, która reprezentuję ile czasu w minutach pociągi mają na to, aby móc wyjeżdżać z zajezdni.
Na wyjściu pokazana jest lista pociągów, które po kolei wyjeżdżały przez owe N minut, w taki sposób, aby łączna pojemność ładunku tych pociągów była możliwie jak największa.

Warunki:

  1. Jednocześnie z zajezdni może wyjeżdżać tylko jeden pociąg.
  2. Cały czas musi z zajezdni wyjeżdżać jakiś pociąg. Jeden po drugim. Pociągów w zajezdni jest dostatecznie dużo, żeby to osiągnąć.

Problem jest taki, że dopiero niedawno zacząłem się bawić programowaniem. Znam mega podstawy C++, nie dotknąłem jeszcze nawet OOP.

Gdyby pociąg miał tylko jedną cechę np. ile czasu wyjeżdża, a treść zadania by była żeby przez N minut wyjechało jak najwięcej pociągów, to bym to jakoś ogarnął, np.: zajezdnią pociągów (czyli pulą pociągów) mogłaby być tablica np. double zajezdnia[6] = { 7.44, 8, 2.48, 1, 1.11, 4.20 };. Po podaniu N np. N=16 sprawdzałbym który element w tablicy ma najmniejszą wartość oraz czy N - czas wyjazdu danego pociagu >= 0 i wyrzucałbym ten pociąg z tablicy/nie korzystał już z niego więcej. Następnie powtarzał proces tak długo o ile jakiś pociąg może jeszcze wyjechać. I potem wyświetlił.

No ale jako, że cech jest więcej niż jedna, to po prostu nie wiem od czego zacząć.

Możecie podzielić się jakimikolwiek wskazówkami lub hasłami co powinienem googlować, żeby spróbować dojść do rozwiązania? Dziękuję

1

Naucz się korzystać ze struktur albo klas.

1

Każdy pociąg ma cztery cechy:

To zdanie dosc glosno do Ciebie krzyczy:
"Rob klase!"

1

No jak nic struktura albo klasa, dla uproszczenia struktura:

struct Train
{
    std::string name;
    float capacity;
    float departureTime;
    float returnTime;
};
0

Jasne, że struktura. :) Ale w jaki sposób w ogóle takie coś próbować obliczyć, gdy jest tak dużo zmiennych?

1 użytkowników online, w tym zalogowanych: 0, gości: 1