Нахождение отношения рекуррентности и экспоненциальности матрицы

Я пытаюсь найти рекуррентное отношение для этой проблемы на Codechef:

http://www.codechef.com/problems/BWALL

Я знаю, как только найду его, я легко смогу его решить, используя экспоненциальную матрицу. Но мне трудно понять, как он получает правильный ответ. Здесь есть решение, но я бы хотел, чтобы кто-то объяснил это лучше?

enter image description here enter image description here enter image description here

Существует простое эмпирическое правило, чтобы найти рецидивы или что-то в этом роде? Благодаря!

1
nl ja de

1 ответы

«Общее правило» для поиска повторения состоит в том, чтобы понять, как решение проблемы связано с решениями меньших задач. Но более того, я не думаю, что есть общая процедура, чтобы найти повторение.

Для этого конкретного примера, вот как вы можете найти повторение.

Предположим, что у вас большая стена размером N. Теперь просто взгляните на конец стены. Точнее, от конца стены найдите первое место с «вертикальным разделением», т. Е. Первое место, где вы можете разделить стену на две меньшие стены без L-образной формы.

Пример:

(A) Вот стена:

<�Р> X ### X # XXX # X      <�Р> XX # XX # XXXXX

Разделение с концом дает вам:

X ### X # XXX #X

     

XX # XX # XXX XX

(B) Другая стена

<�Р> X ### X # XXX      <�Р> XX # XX # XXX

Разделение с концом дает вам:

X ### X # XXX

     

XX # XX # XXX

Каков размер небольшой части стены, которую вы можете получить между расщеплением и концом стены? Ну, у вас может быть 1, 2 или 3, но не более (в противном случае вы можете сделать небольшое расщепление).

Возможности для маленькой части - это те, которые заданы в вашем вопросе (да, 7 маленьких блоков).

Итак, чтобы построить стену с размером N, вы должны:

  • постройте стену размера N-1 и добавьте конец маленького блока размера-1.
  • или построить стену размера N-2 и добавить к концу один из четырех блоков размера-2.
  • или построить стену размера N-3 и добавить к концу один из двух блоков размером-3.

Таким образом, число T (N) возможных стенок с размером N равно

  • the number of walls with size N-1 (with size-1 block in the end) -> T(N-1)
  • plus the number of walls with size N-2 with 4 possible end blocks (with size 2) -> 4 T(N-2)
  • plus the number of walls with size N-3 with 2 possible end blocks (with size 3) -> 2 T(N-3)

И там вы получите свое повторение.

Надеюсь, поможет!

1
добавлено
Очень четкое объяснение, спасибо!
добавлено автор Bruce, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest