Жадность алгоритма правильности - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь решить следующую проблему:

Генеральный директор проверяет своих сотрудников в постоянное время каждый день (для пример количества минут после начала смены> {5, 35, 120 ..}). Рассчитайте, когда должны работать сотрудники, чтобы каждый раз, когда генеральный директор проверял их, они работали. Их работа занимает 3 минуты, чтобы завершено, и оно увеличивается еще на 3 минуты каждый раз, когда они начинают снова работает (Первый раз занимает 3 минуты, второй раз 6 минут, третий раз занимает 9 минут ..).

Это мой алгоритм в псевдокоде:

int time = 2
for: every CEOcheckTime in 0 to CEOcheckTime.length
    add (CEOcheckTimes-time) to results
    time = time + 2

Игнорирует ли мой крайний случай, когда генеральный директор проверяет сотрудников раньше, чем они могут закончить работу, мой алгоритм верен? Спасибо!

1 Ответ

0 голосов
/ 31 мая 2019

Игнорирование 'крайнего случая' это выглядит нормально, за исключением того, что ваше время увеличивается на 2, а не на 3 согласно спецификации.

 int time = 3
 for: every CEOcheckTime in CEOcheckTimes
     add (CEOcheckTimes-time) to results
     time = time + 3

здесь может быть использован аналогичный подход вовремя, который учитывает и ваш крайний случай.

for: every CEOcheckTime in CEOcheckTimes
    if exists(time):
        if last(results) + time < CEOcheckTime:
            add (CEOcheckTimes) to results
            time = time + 3
    else:
         add (CEOcheckTimes) to results
         time = 3

edit: я предположил, что если работа начинается / заканчивается одновременно с проверкой того, что это считается работой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...