再帰関係と行列のべき乗を求める

私はCodechefでこの問題の再発関係を見つけようとしています。

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

一度見つけたら、行列の指数関数を使って簡単に解くことができます。しかし、私はそれが正しい答えを得る方法を理解するのに困っている。ここには解決策がありますが、誰かがそれをより良い方法で説明したら欲しいですか?

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

再発やそのようなものを見つけるための簡単な経験則がありますか?ありがとう!

1
nl ru de

1 答え

再帰を見つけるための「一般的なルール」は、小さな問題の解にどのように問題の解があるかを理解することです。しかしそれ以上に、私は再発を見つけるための一般的な手続きはないと思います。

この特定の例では、ここで再発を見つけることができます。

あなたが大きさNの大きな壁を持っているとしましょう。今、壁の端を見てください。より正確には、壁の終わりから、「垂直分離」、すなわち、L字形のない2つの小さな壁に壁を分割することができる最初の場所で最初の場所を見つけます。

例:

(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の壁を作り、4つのサイズ2のブロックの1つを追加する
  • サイズN-3の壁を作り、2つのサイズ3のブロックの1つを追加します。

したがって、サイズNの考えられる壁の数T(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,