我最近在比赛中遇到了这个问题:
How many ways are there to fill a 4*N board completely using only tiles of 1*4 and 4*1 dimensions?
通过很多案例,我们发现了
f(i) = f(i-1) + f(i-4) ; (i > 4)
是此问题的解决方案(动态编程)。但在我们提交并获得AC之前,我们仍然不确定这个答案。
所以任何人都可以解释我如何达到上述公式,因为它对我来说并不直观。如果问题陈述改变了,我们不得不使用尺寸为2 * 3和3 * 2的瓷砖,那么递归公式是什么呢?所以本质上我想知道如何解决这种平铺问题,方法是什么。欢迎任何好的参考链接。
由于
答案 0 :(得分:3)
假设网格是N& 4高。如何覆盖左上角有两种选择:你可以用一个瓦片覆盖最左边的列,这是你的f(i-1)项;或者你可以覆盖前4列的顶行,强迫你用类似导向的瓷砖覆盖剩下的那些列,给出f(i-4)项。
答案 1 :(得分:0)
“所以从本质上讲,我想知道如何解决这些问题,方法是什么。欢迎任何好的参考链接。”
MIT Opencourseware有一个算法类介绍。以下是该课程“动态编程讲座”的链接。
祝你好运!