ACM递推求解

基本步骤

  1. 确认能否容易地得到初始状态的解
  2. 假设不大于N-1的状态已经得到解决
  3. ✭当规模扩大到N时,想办法枚举到所有可能的情况,然后用子问题的状态(F(1)、F(2) ...F(N-1))表示出最终的状态F(N)

经典例题

直线分割平面问题

        :假设之前已经有n-1条直线,并且已经分割了f(n-1)个区域,第n次分割就是在原先的基础上再分割一次。对于这一条直线,它与之前的直线毫无疑问有n-1个交点,这些交点把这第n条直线分为了n段,每一段就代表增加了一个新的区域。

        状态转移方程:f(n) = f(n-1) + n

折线分割平面问题

        :与上一个问题本质一致,对于第n条折线,它与之前的n-1条折线最多有4(n-1)个交点,因此可以增加4(n-1)+1个平面。

        状态转移方程:f(n) = f(n-1) + 4n - 3

方格铺骨牌问题1(2格骨牌铺2*n方格)

        :对于2*n的方格,先只考虑最右上角的方格,占据这个方格的骨牌只有两种铺设方式:竖着或者横着。

        状态转移方程:f(n) = f(n-1) + f(n-2)

方格铺骨牌问题2(3种骨牌铺1*n方格)

        :同理,最后一个方格有三种铺设情况。

        状态转移方程:f(n) = f(n-1) + f(n-2) + f(n-3)

男女生排队问题(女生不能单独站)

        解#1:对于n人的队列考虑以下情况:

                        假如最后一个是男生

                                前n-1个人组成的队列假如合法:√,有f(n-1)种情况

                                前n-1个人组成的队列假如非法:×,有0种情况

                        假如最后一个是女生(则第n-1个人也必须是女生):

                                前n-2个人组成的队列假如合法:√,有f(n-2)种情况

                                前n-2个人组成的队列假如非法:当只有第n-2个人是女生时√,有f(n-4)种情况

        解#2:记f(n, 1)为长度为n,以男生结束的队列;f(n, 2)为长度为n,以女生结束的队列,则:

                        f(n) = f(n, 1) + f(n, 2)

                        f(n, 1) = f(n-1) = f(n-1, 1) + f(n-1, 2)

                        f(n, 2) = f(n-1, 2) + f(n-2, 1)        //同样分合法非法讨论

        状态转移方程:f(n) = f(n-1) + f(n-2) + f(n-4)

直线不相交问题(总共有n对)

        :就1号来说,他就只可以和偶数相连。假如和2相连,那么就是f(n-1)种情况;假如和4相连,那么就是f(n-2)种情况......

        状态转移方程:f(n) = f(0) * f(n-1) + f(1) * f(n-2) + f(2) * f(n-3) + ... + f(n-1) * f(0)

        概念

                卡特兰数(Catalan Number):第n项与前面每一项都有关系

                前几项1251442132,429,1430,4862,16796...

                求解公式: f(n) = C(2n, n) / (n+1) (n = 0, 1, 2...)       or       f(n) = f(n−1) ∗ (4∗n−2) / (n+1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值