DP平铺2xN瓷砖与L形瓷砖和2x1瓷砖?

时间:2017-12-14 11:16:18

标签: algorithm recursion dynamic-programming recurrence

https://www.iarcs.org.in/inoi/online-study-material/topics/dp-tiling.php

上述链接中的第二个问题要求我们使用尺寸为2x1和L形瓷砖的瓷砖填充2xN网格。

我怀疑在g(n)的递归公式中:

g(n) = f(n-1) + h(n-1)

为什么我们不包括底行有n个tile的情况,而且上面的行有n-3个tile?然后我可以简单地将2x1瓦片水平放置在上面的行中并实现状态g(n)。所以我们需要在上面的递归中添加另一个术语。像 -

这样的东西

g(n) = f(n-1) + h(n-1) + x(n-3)

f(n) = f(n-1) + f(n-2) + g(n-2) + h(n-2)仍然存在。

基本上,我们是不是在研究如何获得状态g(n)的情况?要获得g(n)状态,我们要么添加一个L形图块,要查看f(n-1),要么在底层添加一个2x1图块并查看h(n-1),或者添加一个2x1在顶层中找到并查看x(n-3)

1 个答案:

答案 0 :(得分:0)

这个案例已经包含在内了。如果您为案例引入了名称t(n),那么:

t(n) = g(n-2)

因为如果你想用瓷砖填充这样一个奇怪的网格,你将一个瓷砖水平放置在最左边的位置,然后你得到一个他们已经有名字的网格。 / p>

因此,如果您引入t(n)及其对称对应s(n),那么

f(n) = f(n-1) + f(n-2) + t(n) + s(n)
t(n) = g(n-2)
s(n) = h(n-2)

这可以立即简化为他们在讨论中所拥有的内容。