【问题标题】:Solving Tiling Problems解决平铺问题
【发布时间】:2014-01-18 14:06:56
【问题描述】:

我最近在一次比赛中遇到了这个问题:

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 的图块,那么递归公式是什么?所以本质上我想知道如何解决这样的平铺问题,方法是什么。欢迎任何好的参考链接。

谢谢

【问题讨论】:

    标签: algorithm dynamic-programming combinatorics


    【解决方案1】:

    假设网格是 N 跨和 4 高。对于如何覆盖左上角,您有 2 个选择:您可以用单个图块覆盖最左边的列,这是您的 f(i-1) 项;或者你可以覆盖前 4 列的第一行,强制你用类似方向的图块覆盖其余的列,给出 f(i-4) 项。

    【讨论】:

      【解决方案2】:

      “所以本质上我想知道如何解决这些问题,方法是什么。欢迎任何好的参考链接。”

      MIT Opencourseware 有一个算法类介绍。这是该课程动态编程讲座的链接。

      http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/lecture-15-dynamic-programming-longest-common-subsequence/

      祝你好运!

      【讨论】:

      • 我知道dp,我想知道的是上面dp方案背后的直觉:)
      猜你喜欢
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 2018-12-30
      相关资源
      最近更新 更多