Ctrl K

Разрезать торт с ягодами

Сложная
Прямоугольный торт задан списком строк cake: символ 'A' — клетка с ягодой, '.' — пустая клетка. Торт нужно разрезать на pieces кусков, сделав pieces - 1 разрезов. Каждый разрез делается по границе клеток через весь оставшийся кусок — вертикально или горизонтально. При вертикальном разрезе левая часть отдаётся гостю, при горизонтальном — верхняя; резать дальше продолжают оставшуюся часть. Последний оставшийся кусок достаётся последнему гостю. Посчитайте, сколькими способами можно разрезать торт так, чтобы в каждом куске была хотя бы одна ягода. Способы различаются, если на каком-то шаге выбран другой разрез. Ответ может быть большим — верните его по модулю 10⁹ + 7.
Пример 1
cake=["A.A", "...", ".A."], pieces=2 → 4

Подходят четыре разреза: вертикальные после столбца 0 и после столбца 1, горизонтальные после строки 0 и после строки 1 — в обоих кусках каждый раз есть ягода.

Пример 2
cake=["AA", ".."], pieces=3 → 0

Ягод всего две, а кусков нужно три — способов нет.

Пример 3
cake=["A"], pieces=1 → 1
Ограничения
  • 1 ≤ len(cake), len(cake[i]) ≤ 50, все строки одной длины
  • 1 ≤ pieces ≤ 10
  • cake состоит только из символов 'A' и '.'
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный подъём по карте СложнаяПятнашки на шесть клеток СложнаяМышь, кот и сыр СложнаяПрогулки только в гору СложнаяПодъём по строкам и столбцам Сложная
загружаем Python…
Вход
cake=["A.A", "...", ".A."], pieces=2
Ожидается
4

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