算法02--铺砖和对称铺砖

铺砖

2 * n的一个形状,用1 * 2的砖来铺,那么会有所有的铺法及对称铺法(或者非对称铺法)。就不想画图了,因为用markdown画图实在是太麻烦了。
首先是递推公式,对于一个2*n的矩形,我可以竖着放一个砖,或者横着放两块砖,所以看起来是这样的:
f(n) = f(n-1) + f(n-2)
这个公式怎么这么眼熟的。结束条件就是当n为1的时候,那么只能够有一种铺法了。

对称地铺砖

方法1:两头铺

两头铺方法就是铺的时候,左边放一块,右边也放一块,用同样的方法来放。所以如果对于任何一种情况,都分为左边竖一块,右边竖一块,或者左边横两块,右边横两块。结束的时候的模式:n大于4时,都能够正常计算,n为0时,认为已经铺完,所以f_s(0)=0,n为1的时候,只能竖着一种,n为2时,横着铺两块,n为3时,只能竖着3块一种方法。
f_s(n) = \left\{ \begin{array} {ll} 0, & n = 0 \\ 1, & 1 \leqslant n \leqslant 3\\ f_s(n-2) + f_s(n-4), & n \geqslant 4 \end{array} \right.

方法2: 铺一半

双数情况下,分为两半,左边随便铺,右边和左边一样铺。单数情况下,中间一块竖着铺,剩下的左边随便铺,右边和左边一样铺,就对称了。
f_s(x) = \left\{ \begin{array} {lr} f((x-1)/2) & x\%2=1 \\ f((x-2)/2) & x\%2=0 \\ \end{array} \right.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。