多米诺瓷砖

来源:互联网 发布:seo主管招聘 编辑:程序博客网 时间:2024/06/02 19:09

看编程之美的时候看到一个铺瓷砖的课后问题。

在一个8*8的网格里铺上1*2的瓷砖,

有多少种方法。

 

从wekipedia发现这个问题叫做多米诺瓷砖……我想……诺贝尔瓷砖……马桶什么的

 

想了半天也没想出来,只知道肯定是递归,肯定是第一块砖横放竖放两种分支,

但是边界上1*2的砖其实是可以越界的,google一番,发现人家的递归也是这个思路,

但是边界上越界的情况没有考虑在内。

 

于是很晕,一直到昨天下班后到了延安西路上轻轨的电梯的时候,忽然开窍了。

其实就是把分割做两次,再把重复的去掉,就这么简单,我就是想不出来。

 

 

就是上面这三种情况,当第一块砖是横放的时候,应该是1+2-3,

 

于是就有了递归,或者是构造一个矩阵自下而上的直接算出来。

 

编码验证的时候也发生了点小插曲。C—Free调试的时候貌似功能做的不大好,进一个函数就值乱了。

最后还是把c放到了eclipse里调试出来的。

 

矩阵在初始化的时候也发生了点脑力活动,就是dominoTile这个函数,长宽是0的时候,我开始设成了0,

后来发现是不对的,因为这里应用的是乘法原理,所以应该是1。

 

而对于长宽都是奇数的情况,收到书本的提示,一早就设成0了,不然也要自己想一想。

 

 

原创粉丝点击