组合数递推公式的推导
突然想到可以从集合的角度来推导组合数的递推公式,特意记下来。
可以把理解为从个元素中选取个元素所组成的集合的数量,也就是说这些集合中的元素个数恰好都为个,并且这个元素都是从个元素中选出来的,而这样的集合的个数就为个。
显然,对于包含个元素的这些集合中,对于某个元素,这些集合中要么包含,要么不包含。因此我们可以把这些集合划分成两类,一类是包含的集合,另一类是不包含的集合,这样一定可以把这个集合不重不漏地划分为两类。我们分别算一下在这两类中,每一类中含有的集合个数是多少,最后把这两类的分别含有的集合个数加起来,就可以得到这个值。
下面我们来分别计算这两类中各自含有的集合的个数。
首先是包含元素的一类:
每个集合中包含的元素个数都为,且必定包含元素。由于是组合,不考虑顺序,我们统一把放在最后一个位置。
我们来把被划分到这类的集合表现出来,其中代表任意一个元素,并且不存在为的元素。
现在要求的是有多少个这样的集合。由于每一个集合的最后一个元素为,我们可以把每个集合中的去除,这种做法并不影响这些集合的个数。
现在问题就等价于,只考虑由前个元素构成的集合的个数有多少个。
由于这些集合中的前个元素都不为,我们可以把从个元素中去除,变成了个元素。
要知道组成这个元素的集合的个数有多少个,就等价于从个元素里面选出个元素的方案数,也就是。
所以这一类所包含的集合的个数为。
然后是不包含元素的一类:
每个集合中包含的元素个数都为,且必定不包含元素。其中代表任意一个元素,并且不存在为的元素。
现在要求的是有多少个这样的集合。由于每一个集合都不包含元素,因此我们可以先把从个元素中去除,变成个元素,现在这个元素中是没有的了。
等价于要知道从这个元素里面选个元素的方案数,也就是。
所以这一类所包含的集合的个数为。
最后就是把这两类的各自含有集合的个数加起来,就得到从个元素中选取个元素的集合的数量,即
本文来自博客园,作者:onlyblues,转载请注明原文链接:https://www.cnblogs.com/onlyblues/p/15982054.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效