以骨牌问题来说说状态转移方程

首先我们观察题目

       显然,当我们试图去不断的列举出n=1,n=2,n=3......会发现铺设的方法数量会变得越来越难算,且看不出什么规律(当然如果有数学大佬可以一眼看出来,例外),此时我们就不应该去从它的局部去盲目列举找关系了,而是得从整体上去看,观察前后关系,看看铺到长度为n的时候有多少方法,但不能真的去算n的情况,而是要换个思路,看看从n-1到n,有几种方法,我们会发现,只有1种(1*2的骨牌竖着放),我们假设长度为n时候方法数为f(n)种,那么f(n)中肯定有f(n-1)种情况。

       我们再看,发现骨牌可以横着放,并且还有2*2的骨牌,所以我们从n-2的长度也可以到n,并且有两种方法可以到,所以f(n)应该还由两个f(n-2)所组成,在看从n-3到n,发现并没有方法,由此可以得出,f(n)=f(n-1)+2*f(n-2)这个关系式,我们把它称作状态转移方程,我的理解是,它通过考虑n之前状态,转移得到n状态推导出来方程。高中数学中,概率统计有一类综合题,体现的就是这种思想,著名的斐波拉契数列,马尔科夫链....也可以用这种方法来理解。

       从这些问题中我体会到,在学习过程之中,我们可能会通过不断的练习,来巩固加深自己对知识的理解和掌握,但我觉得,无论是我现在刷算法题,还是过去刷数学题,重要的往往不是题目本身,而是应该去体会它背后蕴含的思想。

      最后,感谢大家的观看,第一次写博客有些不太全面的地方,欢迎大家评论指导,以下附上我用c写的这道题目的代码:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值