【问题标题】:In how many ways can you tile a 3xn rectangle with 2x1 dominoes?有多少种方法可以用 2x1 多米诺骨牌平铺一个 3xn 矩形?
【发布时间】:2011-01-26 11:03:49
【问题描述】:

每天我都在与算法问题作斗争,并尝试在这里提出我无法回答的问题。对不起,如果我引起任何头痛。总之,

这是滑铁卢大学 ACM 编程竞赛的problem

您可以用多少种方式将 3xn 矩形与 2x1 多米诺骨牌平铺?

涅槃:闻起来像递归精神

【问题讨论】:

    标签: algorithm math dynamic-programming


    【解决方案1】:

    只是对 taskinoor 答案中隐含给出的方程的显式解决方案:

    或者

    f[n]=((1 + (-1)^n)*((2 - Sqrt[3])^(n/2)*(-1 + Sqrt[3]) + 
         (1 + Sqrt[3])* (2 + Sqrt[3])^(n/2)))/(4*Sqrt[3]) 
    

    如果有人在乎的话。

    让我们显示 10 个值(奇数 n 没有解){n,f[n]}:

    {6, 41.},   
    {12, 2131.},   
    {18, 110771.},   
    {24, 5.75796*10^6},   
    {30, 2.99303*10^8},   
    {36, 1.5558*10^10}, 
    {42, 8.08717*10^11},  
    {48, 4.20377*10^13}, 
    {54, 2.18515*10^15}, 
    {60, 1.13586*10^17}
    

    【讨论】:

    • +1。真的很困惑接受正确的答案:)。谢谢你们俩
    • @taskinoor 它与斐波那契显式形式有一个奇怪的相似之处upload.wikimedia.org/math/a/f/9/…
    • @hilal 答案由 taskinoor 提供。我刚刚详细说明了这一点。
    • 注意$(2+\sqrt3)^{1/2}=(1+\sqrt3)/\sqrt2$,所以可以简化
    • 事实上,即使是$n$,也是最接近$$\dfrac{(1+\sqrt3)^{n+1}}{2^{n/2+1}的整数\cdot\sqrt3}$$
    【解决方案2】:

    您可以使用动态规划来解决这个问题。检查this 以获取可能的解决方案。

    【讨论】:

    • @hitesh_noty 链接失效了。我很久以前写了这个答案,当时我不明白这个问题,只有链接的答案。我在这里找到了另一种解释:cs.stackexchange.com/questions/42170/… 但老实说,我需要编辑此答案以在此处添加解释,以便它不依赖于另一个链接。
    【解决方案3】:

    只是关于如何获得显式解决方案公式的说明,诀窍是将其写下来作为矩阵乘法的递归,然后使用矩阵的nth 次方的特征值公式。对于上面的递归,等式是

    (不可用)

    你可以看到四个特征值出现在贝利撒留的显式公式中

    【讨论】:

    • +1:如果您只是在寻找一种算法,只需在 O(logn) 时间内计算矩阵的幂,这具有仅使用整数算术的优势。
    • 图片丢失。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多