- 22, Oct 2024
- #1
Испытание:
Найдите количество способов подняться по лестнице с n ступенями и некоторыми ограничениями. Вы сможете запустить приведенные ниже тесты на TIO. https://tio.run/ без тайм-аута. – 60 секунд. (Обычно для большинства языков вполне достижима доля секунды, если применяется хорошая стратегия оптимизации).
Входные данные представляют собой список положительных чисел:
- первое число во входных данных — это общее количество ступенек на лестнице
- Остальная часть входных данных — это различное количество ступенек, на которые вам разрешено подняться одновременно, но вам разрешено использовать n ступенек максимум n раз, если n>1. Таким образом, если разрешено 2, вам разрешено сделать 2 шага максимум 2 раза. И 3 шага максимум 3 раза и так для всех n>1. Таким образом, если разрешено 1, вы можете делать 1 шаг столько раз, сколько захотите.
- не следует «переступать», поскольку лестница из 5 ступенек и разрешено только 2 ступеньки сразу, подняться по ней невозможно (выход 0)
Допустимые допущения: все входные числа являются целыми положительными числами, не менее 1 (0, отрицательные и дробные числа не требуют специальной обработки). Список разрешенных шагов представляет собой уникальные номера и упорядочен, если это помогает. Также размер лестницы может быть последним числом или отдельной частью входных данных, если это полезно для вашей реализации («реорганизация» входных данных не должна быть частью проблемы)
Выход:
- число, обозначающее количество способов подняться по лестнице
Примеры:
- Входные данные: 3,1 Выходные данные: 1 (поскольку существует только один путь, когда вам разрешен только один шаг за раз)
- Вход: 3,1,2 Выход: 3 (так как подняться можно тремя способами: 1+1+1 или 1+2 или 2+1)
- Ввод: 3,4 Вывод: 0 (вы всегда должны заканчивать наверху, вы не можете сделать 4 ступеньки, так как на лестнице всего 3)
- Вход: 4,1,2,3 Выход: 7 (1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2, 3+1, 1+3 )
- Ввод: 6,2 Вывод: 0 (поскольку нельзя сделать 2 шага 3 раза)
- Вход: 6,2,1 Выход: 12 (2+2+1+1, 2+1+2+1, 2+1+1+2, 2+1+1+1+1, 1+2+2 +1, 1+2+1+2, 1+2+1+1+1, 1+1+2+2, 1+1+2+1+1, 1+1+1+2+1, 1 +1+1+1+2, 1+1+1+1+1+1, но 2+2+2 не допускается.)
- Ввод: 99,99,1 Вывод: 2 (99 или 1+1+1+1+...99 раз)
Еще тесты:
2,1 → 1
10,1 → 1
3,1,2 → 3
3,4 → 0
3,2 → 0
4,1,2 → 5
4,1,2,3 → 7
6,2 → 0
6,2,1 → 12
7,1,2 → 17
5,1,2,3 → 13
15,1,2,7 → 266
39,3,2,7 → 301
99,11,3,2 → 1981
#код-гольф #ограниченное время