Я намагаюся імітувати ліфт, як завжди, я починав дуже просто, приймаючи лише одне замовлення за один раз, потім додав пам’яті до ліфта у вигляді черг, щоб підлоги проходили в тому порядку, в якому їх натискали, що, очевидно, не найкращий підхід.
Тож на даний момент я використовую дуже просту і «короткоглядну» логіку, яка полягає в тому, що для поточного поверху знайдіть підлогу, що знаходиться найближче до мене, і встановіть його як наступне місце призначення та цикл, доки в списку не буде більше поверхів.
Але це не завжди спрацьовує, наприклад, ліфт був на 3-му поверсі 5-поверхового будинку і отримав замовлення 4,5,2, найкоротший шлях буде 2-> 4-> 5, який коштує 4 поверхи, але використовуючи цю логіку 4-> 5-> 2, який коштує 5, має однакові шанси на вибір, залежно від коду.
Як знайти найкоротший шлях і зробити ліфт більш ефективним?