组合数
1|0组合数
1|1基本做法
先看看不做预处理计算一个组合数:
1|2预处理组合数
针对大多数仅仅是利用组合数求解问题的题目运用递推法打表,不仅方便,而且可以稳稳地控制复杂度,对于需要多次引用组合数的题目效果极佳:
基于组合数公理性质:
推得:
由这个递推公式就可以熟练的写出组合数代码,但要注意初始化:
同时,把表打出来后,我们会发现这就是杨辉三角,这个三角可以解决很多问题,记住打印三角的方法也可以打出组合数。
1|3例题
这题还需要再用前缀和来优化查询速度
前缀和可以有效减少查询统计时的复杂度,每一次查询
记住:上加左 减左上 加自己
- 需掌握组合数的基本两种求解方法(通项公式,递推公式),根据数据范围选定方法。
- 结合数据范围找到优化方法,无论是取模还是自己的玄学优化都尝试一下.(建议取模输出的题,绝对不要乱模!既费时又易错)
- 掌握前缀和,利用前缀和对降维的作用。
拿 cgx
举例,设 cgx
小的单词个数,初值为
cgx
肯定比只有一个字母的单词大,
cgx
肯定比只有两个字母的单词大。
只有两个字母的单词个数该怎么算呢?就是在
a-b
为第一位的大( cgx
第一位为 c
,所以要比 c
小)
-
以
a
为第一位,且有三位的单词个数: 。从比
a
大的剩下 个字母中选 个字母:
。 -
以
b
为第一位,且有三位的个数: 。从比
大的剩下 个字母中选 个字母: 。
d-f
为第二位的单词大 (第一位为 c
,所以要比 c
大,第二位为 g
,所以要比 g
小)
-
第二位为
d
的个数: 。从比
d
大的剩下 个字母中选 个字母: 。 -
第二位为
e
的个数: 。 -
第二位为
f
的个数: 。
h-w
为第三位的大,共有
因为比 cgx
小的单词共有 cgx
是第
先判断该单词是否存在,再一位一位地去考虑共有多少比给出单词小的单词,如果用的是字符串,则还需要考虑一下边界问题。
__EOF__

本文链接:https://www.cnblogs.com/kdlyh/p/17871761.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下