Ctrl K

Дуэль за крайние карты

Средняя
На столе в ряд лежат карты с числами cards. Двое игроков ходят по очереди, первый начинает. За ход игрок забирает одну карту с любого края ряда — самую левую или самую правую — и прибавляет её число к своим очкам. Игра заканчивается, когда карты кончаются. Оба играют наилучшим образом. Верните True, если первый игрок наберёт не меньше очков, чем второй (ничья тоже считается его победой), и False иначе.
Пример 1
cards=[3, 9, 1, 2] → True

Первый берёт 2. Второму остаются края 3 и 1; что бы он ни взял, первый забирает 9. У первого не меньше 11, у второго не больше 4.

Пример 2
cards=[2, 7, 3] → False

Какой бы край ни взял первый, второй заберёт 7. У первого выйдет 2 + 3 = 5 < 7.

Пример 3
cards=[4, 4] → True
Ограничения
  • 1 ≤ len(cards) ≤ 20
  • 0 ≤ cards[i] ≤ 10⁷
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДуэль за крайние кучки СредняяРастущий лимит на сундуки СредняяОчки за то, что осталось СредняяБери из любой кучки СредняяБери до трёх карт Сложная
загружаем Python…
Вход
cards=[3, 9, 1, 2]
Ожидается
True

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 112 тестов на сервере, включая скрытые.