有多少种方法可以用2x1多米诺骨牌拼贴3xn矩形?

时间:2011-01-26 11:03:50

标签: algorithm math dynamic-programming

每天我都在努力解决算法问题并尝试在这里问我无法回答的问题。对不起,如果我引起任何头痛。无论如何,

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

  

你可以用多少种方法用2x1多米诺骨牌拼成3xn矩形?

Nirvana:闻起来像递归精神

3 个答案:

答案 0 :(得分:10)

只是在taskinoor的答案中隐含给出的方程式的明确解决方案:

enter image description here

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 :(得分:5)

您可以使用动态编程解决此问题。检查this以获取可能的解决方案。

答案 2 :(得分:3)

关于如何获得显式求解公式的注意事项,诀窍是将其作为矩阵乘法写下递归,然后使用矩阵的n幂的特征值公式。对于上面的递归,等式是

(不可用)

你可以看到belisarius'显式公式

中出现了四个特征值