Полка из досок

Задача по программированию с проверкой онлайн

Сложность
Лёгкая
Языки
Python
JavaScript
TypeScript
Java
Go
Темы
Динамическое программирование

Нужно заполнить полку длиной length досками без зазоров и без нахлёста. Доски бывают только тех длин, что перечислены в списке planks (длины положительные и различные), каждой длины запас неограничен. Доски кладут слева направо, и порядок важен: заполнения [1, 2] и [2, 1] считаются разными. Верните число различных заполнений. Для length = 0 заполнение одно (пустое); если заполнить нельзя, верните 0.

Можно рассуждать от последней доски: если она имеет длину p, то остальное заполняет полку длиной length - p. Ограничения: length не больше 30, в planks не больше 4 длин.

Пример: 4, [1, 2] → 5 (1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2).


Источник: задача CodeShare

Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).

Ещё задачи

Все задачи для тренировки