递推公式小结

闲来无事,把几个递推公式做了一下总结。

斐波那契

这个应该是大家比较熟悉的递推公式了吧,比如问你有2行n列的长方形方格,要求用n个1*2的骨牌铺满。有多少种铺法?,那么这题我们可以想到可以通过n-1时以及n-2时转移过来,于是答案即为斐波那契数列的第n项。
递推公式: f[i]=f[i1]+f[i2]

组合数

对于求解n个数中选择m个有多少种方案,我们可以想到使用组合数求解,而对于中等数据范围,多次查询的题目我们可以使用递推组合数的方法求解,所得的即为杨辉三角表。
原公式: C(n,m)=n!m!(nm)!
递推公式: C[i][j]=C[i1][j1]+C[i1][j]

错排公式

十本不同的书放在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法?
这种问题即为错排问题,设 D[i] 为有i个物品的方案数,于是我们考虑使用递推法求解。
第一步,把第 n 个元素放在一个位置,比如位置k,一共有 n1 种方法;
第二步,放编号为 k 的元素,这时有两种情况:
⑴把它放到位置n,那么,对于剩下的 n1 个元素,由于第 k 个元素放到了位置n,剩下 n2 个元素就有 D[n2] 种方法;
⑵第 k 个元素不把它放到位置n,这时,对于这 n1 个元素,有 D[n1] 种方法;
最终,我们得到了一个公式: D[i]=(i1)(D[i1]+D[i2]) 此即为错排公式

卡特兰数

矩阵连乘: P=A1×A2×A3××An ,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?
合法的括号序列,排队买票,凸包的划分三角形问题都可以使用卡特兰数解决,我们设合法的解决方案数为 h(n) ,于是我们能推出一个很暴的函数啊 h(n)=h(0)h(n1)+h(1)h(n2)+...+h(n1)h(0) ,先别着急啊,这只是最基本的公式,还有更暴的递推式:
h(n)=h(n1)(4n2)
对于这个东西如何做到非递推求解呢?
我们有两个等价的式子
h(n)=C(2n,n)n+1
h(n)=C(2n,n)C(2n,n1)
于是我们可以借助之前提到的组合数得到问题的答案啦。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值