Ctrl K

Стена со смещёнными стыками

Средняя
Нужно сложить стену из rows рядов, каждый длиной ровно length. Есть кирпичи высотой 1 и длинами из массива pieces (все длины разные); кирпичей каждой длины сколько угодно, поворачивать их нельзя. Стена считается прочной, если у любых двух соседних рядов стыки между кирпичами не приходятся на одно и то же место. Края стены стыками не считаются. Посчитайте, сколькими способами можно сложить прочную стену. Способы различаются, если хоть в одном ряду кирпичи идут в другом порядке. Ответ верните по модулю 10⁹ + 7.
Пример 1
rows=2, length=4, pieces=[1, 3] → 2

Ряд можно собрать как 1+1+1+1, 1+3 или 3+1. Прочную стену дают только пары «1+3 под 3+1» и «3+1 под 1+3»: у них стыки на расстоянии 1 и 3 от края и не совпадают.

Пример 2
rows=3, length=2, pieces=[2] → 1

Каждый ряд — один кирпич длины 2, внутренних стыков нет, так что стена из трёх таких рядов прочная.

Пример 3
rows=1, length=5, pieces=[3, 4] → 0

Из кирпичей длины 3 и 4 ряд длины ровно 5 не собрать.

Ограничения
  • 1 ≤ rows ≤ 100
  • 1 ≤ length ≤ 10
  • 1 ≤ pieces.length ≤ 10
  • 1 ≤ pieces[i] ≤ 10
  • Все значения pieces различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКвадратная рамка из палочек СредняяРассадка с делимостью СредняяСамая дешёвая корзина с наборами СредняяГруппы с равными суммами СредняяМеньше всего пешком до самокатов Средняя
загружаем Python…
Вход
rows=2, length=4, pieces=[1, 3]
Ожидается
2

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