递推专题

* 本专题锻炼递推的思维,问题由子问题构造 *

HDU—Children’s queue(递归解法)

题意:

男生女生排队,女生不可以单独一个人存在,例如 男男女 不合法, 女女男则可以,求合法序列个数

思路:

养成递推的习惯, 定义f[ n ] 表示排n个人的合法序列个数, 我们希望求得f[ n ]时,那么一定是由他的子状态构成,而子状态肯定也是合法状态,那样我们就不必关心它内部具体是什么,而把子状态看成整体就好了。那么我们分为几种情况
1 、第n个是男生, 那么只要前n-1 是合法序列即可
2、第n个是女生, 那么只要n-1个是女生才满足条件,那现在看成是两个女生和哪些序列能形成合法序列
1)第f[ n-2 ]个是合法序列, 那么加上两个女生也是合法序列
2)第 n-2 不是合法序列 f[n - 4 ]+ 男 + 女 + 两女 , 能把不合法变成合法

综上所述, 递推公式就是 f[ n ] = f[ n-1 ]+ f[ n-2 ] + f[ n-4 ]

HDU - Queuing

题意:

fm序列, 不允许有fmf , fff存在, 求合法序列个数

思路:

跟上一题一个道理,分析f[ n ] , 假设最后是m,那么只要 n-1 是合法序列即可。 否则,也就是f 的情况,只有这几种情况 fmf mff fff mmf , 其中 fmf、fff是不合法的我们不考虑, 那么剩下 mff 、mmf 。
mmf 的情况,只要是 n-3是合法序列那就可以
mff 的情况 还需保证 第n-3位是m , 也就是 mmff

综上所述, 递推公式就是 f[ n ] = f[ n-1 ]+ f[ n-3 ] + f[ n-4 ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值