求出递归关系和矩阵求幂

时间:2013-01-29 08:07:41

标签: c++ c algorithm matrix recurrence

我试图在Codechef上找到此问题的重现关系:

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

我知道一旦找到它,我就可以使用矩阵求幂来轻松解决它。但我很难理解它是如何得到正确答案的。这里有一个解决方案,但我想是否有人以更好的方式解释它?

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

是否有一个简单的经验法则可以找到复发或类似的东西?谢谢!

1 个答案:

答案 0 :(得分: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号大小的一块中。

因此,大小为N的可能墙的数量T(N)是

  • 尺寸为N-1的墙的数量(最后具有尺寸-1块) - > T(N-1)
  • 加上具有4个可能的端块(具有尺寸2)的具有N-2尺寸的壁的数量 - > 4 T(N-2)
  • 加上具有2个可能的端块(尺寸3)的具有N-3尺寸的墙壁的数量 - > 2 T(N-3)

然后你就会再次出现。

希望它有所帮助!