Вдохновение для этого кода гольф головоломки является проблема моста и факел , в котором г люди в начале моста все должны пересечь его в наименьшее количество времени.
Загвоздка в том, что максимум два человека могут пересекать одновременно, иначе мост сломается под их весом, и у группы будет доступ только к одному факелу, который нужно нести, чтобы пересечь мост.
У каждого человека во всей загадке есть определенное время, которое ему требуется, чтобы пройти через мост. Если два человека пересекаются вместе, пара идет так же медленно, как самый медленный человек.
Нет определенного количества людей, которые должны пересечь мост; Ваше решение ДОЛЖНО работать для любого значения d .
Вам не нужно использовать стандартный ввод для этой проблемы, но для объяснения проблемы я буду использовать следующий формат ввода и вывода для объяснения. Первое число, d , это количество людей в начале моста. Затем код отсканирует d чисел, каждое из которых представляет скорость человека.
Выводом кода будет наименьшее количество времени, необходимое для прохождения всех от начала моста до конца моста при соблюдении критериев, описанных ранее.
Вот некоторые входные случаи и выходные случаи и объяснение для первого входного случая. Это зависит от вас, чтобы извлечь алгоритм из этой информации, чтобы решить проблему с наименьшим количеством байтов кода.
вход
4
1 2 5 8
выход
15
Чтобы достичь этого результата, люди должны перейти следующим образом.
A and B cross forward (2 minutes)
A returns (1 minute)
C and D cross forward (8 minutes)
B returns (2 minutes)
A and B cross forward (2 minutes)
Вот еще один тестовый пример, который поможет вам на вашем пути.
вход
5
3 1 6 8 12
выход
29
Правила:
- Предположим, что входные данные не будут отсортированы, и вы должны сделать это самостоятельно (если вам нужно)
- Количество людей в головоломке не установлено на 4 (N> = 1)
- Каждая группа и индивидуальный переход должны иметь факел. Есть только один факел.
- Каждая группа должна состоять максимум из 2 человек!
- Нет, вы не можете спрыгнуть с моста и переплыть на другую сторону. Никаких других трюков, как это;).
1 4 5 6 7
имеет похожую проблему. 25 против 26
N >= 2
людьми (то есть, как ни странно, это дополнительная работа, чтобы разобраться с тривиальным случаем «1 человек должен пересечь»), поэтому некоторые пояснения по этому вопросу были бы хорошими. Заранее спасибо.
1 3 4 5
, которые должны возвращать 14, а не 15.