当前位置: 首页 > news >正文

排列组合专题

排列组合专题

里面会讲组合数的定义 组合数的递推公式 组合数的各种奇怪公式 抽屉原理 范德蒙德卷积 错排 圆排 球盒问题 然后会把oiwiki上之前学的再整理一下

错排问题

错排问题是指1,2,。。。,n这些数重新排列,使得每一个数都不在它原来的位置上,求排列种数

递推处理:

设n个元素重新错排的个数为\(d(n)\)
那么第一个元素可以放在不是第一个位置的任何位置,有\(n-1\)
放了第一个元素后,还剩\(n-1\)个元素,但是n-1个元素不能直接调用\(d(n-1)\)
因为\(2……n\)并不是按照原位置放置的,被第一个元素隔开了,eg
当1放在第三个位置时,\(n=4\),左边是4 2,右边是3,那么是错排,但是2
在原位
所以应该分类讨论
因为我把第一个元素放在后面的位置,那么后面那个位置上的数就不能放在那了,那么那个数该放在哪呢?
1.那个数在第一个位置,这样的话还剩\(n-2\)个元素,而只是交换了那两个元素,其它元素还在那些位置间,所以这n-2个元素必须错排,\(d(n-2)\)
2.那个数不在第一个位置,这样的话我先把那个数放在第一个位置,这样有\(n-1\)个元素(除去第一个已经放好),然后错排这\(n-1\)个数,因为还是只是交换了这两个数,所以可以错排
这样的话,错排后那个元素既不在第一个,也不在原来的位置,\(d(n-1)\)
因为是选定第一个元素的位置后,然后有多少种方法
所以\(d(n)=(n-1)*(d(n-1)+d(n-2))\)
\(d(1)=0\)
\(d(2)=1\)
还有近似公式\(d(n)=ceil(n!/e)\)
一般\(e\)\(2.72\)
但是仅用于选择题且每一项相差很大

容斥原理

\(D(n)=n!(1/2!-1/3!+1/4!+...+(-1)^n/n!)\)
考虑倒扣,\(n!\)是所有排列个数,扣掉存在在自己位置的,也就是扣掉1在自己位置的个数,2在自己位置的个数,...,n在自己位置的个数,然后又扣多了,要加上1 2都在自己位置的个数,1 3都在自己位置的个数...,2 3都在自己位置的个数...,然后又加多了,扣掉1 2 3都在自己位置个数,1 2 4都在自己位置个数...,2 3 4在自己位置个数...,......,直到n个全处理完
也就是\(n!\)减去\(C(n,1)(n-1)!-C(n,2)(n-2)!+C(n,3)(n-3)!+...+(-1)^{n-1}C(n,n)(n-n)!\)
=\(n!-n!/2!+n!/3!+...+(-1)^{n-1}n!/n!\)
减掉之后是
\(n!/2!-n!/3!+n!/4!+...+(-1)^nn!/n!\)
\(=n!(1/2!-1/3!+1/4!+...+(-1)^n/n!)\)
\(QED\)

圆排列

\(A({n,m}) /m\)

3个数1 2 3
围成一圈个数
圈说明可以通过旋转来得到不同的排列,这样有些序列上不同的排列在圈上是相同的
注意这里旋转是一个固定的方向顺时针或者逆时针
image
注意方向要确定
如果方向不确定,也就是既可以顺时针旋转,也可以逆时针选择,那么\(A ({n,m}) /2m\)

组合数递推

\(O(n)\)递推:
$C (n ,m)=C(n ,n-m) $

\(C ( n, k)=C (n-1, k-1 ) * (n/k)\)

\(O(n^2)\)递推:

\(C (n ,m)=C (n-1 ,m-1 )+ C (n-1, m)\)

\(C( n, 0)=1\)

\(m>n时C(n,m) =0\)

\(C(0, 0) =1\)

抽屉原理(狄利克雷原理)

\(n\)个数放入\(m\)个抽屉
至少有一个抽屉中至少有\(ceil(n/m)\)个数

球盒问题

题目:
https://www.luogu.com.cn/problem/P1025
\(n\)个球
\(m\)个盒子
有多少种放法
所有排列组合的模型

1球同,盒不同,无空箱

插板法
\(n-1\)个空
\(m-1\)个板子
\(C(n-1,m-1)\) 前提n≥m
\(n<m\)时为\(0\)

2球同盒不同有空箱

插板法
有空箱的话就在每个箱子里先假装放一个球
然后这样每个箱子都至少一个球,转化成了第一个问题
\(n+m-1\)个空,\(m-1\)个板子
所以无论\(n\)\(m\)大小关系,都是\(C(n+m-1,m-1)\)

3球不同,盒同,无空箱

递推问题
\(f(n,m)=m*f(n-1,m)+f(n-1,m-1)\)前提是\(1<=m<n\)
边界\(f(n,n)=1\)\(n>=0\)时(\(n>=0\)因为0个箱子0个球是一种,因为没球所以算一种)
\(f(n,0)=0\)\(n>=1\)时(为了与上一个边界不重复所以\(n>=1\))
\(m>n\)\(f\)值为\(0\)
前面的\(n-1\)个数已放在\(m\)个箱子里,再放最后一个数,可以放在\(m\)个箱子中任意一个,所以有\(m\)
这里是乘法原理,所以为\(m*f(n-1,m)\)
若前面\(n-1\)个球已放在\(m-1\)个箱子里,则最后一个球只能放在最后一个箱子里,否则会空出箱子
所以有一种,根据乘法原理,\(1*f(n-1,m-1)\)
再根据加法原理把\(m*f(n-1,m)\)\(f(n-1,m-1)\)加起来就是总数
\(n\)个箱子\(n\)个球时由于箱子相同
所以无论怎么放都只有\(1\)
\(0\)个箱子时相当于没放,有\(0\)
\(m>n\)时不可能不空箱子,\(0\)

4球不同盒同有空箱

其实是分类讨论
\(0\)个箱子\(1\)个箱子….到空\(n-1\)个箱子的种数的和
所以又转化成了第三个问题
所以
\(f(n,m)=m*f(n-1,m)+f(n-1,m-1)\)前提是\(1<=m<n\)
边界\(f(n,n)=1\)\(n>=0\)时(\(n>=0\)因为0个箱子0个球是一种,因为没球所以算一种)
\(f(n,0)=0\)\(n>=1\)时(为了与上一个边界不重复所以\(n>=1\))
\(m>\)n时\(f\)值为\(0\)
\(m\)\(m\)一直到\(1\)都要计算一遍并求和

5球不同盒不同无空箱

没有空箱,
所以转化成了第三个问题
\(f(n,m)=m*f(n-1,m)+f(n-1,m-1)\)前提是\(1<=m<n\)
边界\(f(n,n)=1\)\(n>=0\)时(\(n>=0\)因为0个箱子0个球是一种,因为没球所以算一种)
\(f(n,0)=0\)\(n>=1\)时(为了与上一个边界不重复所以\(n>=1\))
\(m>n\)\(f\)值为\(0\)
但最后要把\(f(n,m)\)乘上\(m!\)
因为箱子不同所以箱子有顺序,所以箱子的全排列有\(m!\)
所以\(f(n,m)*m!\)为答案

6球不同盒不同有空箱

不用用递推了
太麻烦了
直接\(m^n\)
因为每个球有\(m\)种选择,而允许空箱,所以\(n\)个球的每个球有\(m\)种选择,把\(m\)连乘\(n\)个就是\(m^n\)

7球同盒同无空箱

其实就是自然数拆分问题
\(m\)个数使和为\(n\),每个数均为正整数,有多少方法?
写过了
\(f(n,m)=f(n-1,m-1)+f(n-m,m)\)
\(f(n,n)\)时为\(1\)
\(f(n,1)\)时为\(1\)
\(m>n\)时为\(0\)

8球同盒同有空箱

分类讨论
转化为第七个问题
\(f(n,m)=f(n-1,m-1)+f(n-m,m)\)
\(f(n,n)\)时为\(1\)
\(f(n,1)\)时为\(1\)
\(m>n\)时为\(0\)
\(m\)要从\(m\)一直到\(1\)
所以把这些\(m\)代入公式求和即可

http://www.jsqmd.com/news/294604/

相关文章:

  • 数字化转型下零售门店管理软件的功能与选择考量
  • 闲鱼开店不用愁!自动回复 + 远程管理,随时随地搞定买家咨询就靠cpolar
  • JBoltAI网关:Java企业级AI的稳定“交通枢纽”
  • 连锁门店数字化平台核心功能与适用场景解析
  • 技术已到位,失业潮为何还未爆发?决策层的认知盲区才是真正的“缓冲带”
  • [Android] vFlow v1.4.0 可视化工作流自动化工具
  • [Windows] WeFlow v1.3.1-V信聊天记录浏览、导出
  • [Windows] 施工日志(工作日志)更新版
  • 【Jenkins从入门到精通:全面指南与实战教程】
  • ADB命令-Kernel常用信息
  • 英语期末复习
  • ADB命令-Kernel-Debug
  • 33.排序链表
  • 折线图的奇妙变奏:四种创意可视化方法
  • Reactor线程池切换publishOn与subscribeOn
  • 本地win系统和vmware 虚拟机 ubuntu实现文件共享
  • CDC虚拟串口与硬件串口传输速度的对比测试
  • 数据结构:加权图 - 详解
  • Xcode中iOS资源混淆问题与解决方案详解
  • 导师推荐2026 TOP10 AI论文软件:本科生毕业论文写作全解析
  • 2026年豆包优化工具选型:从技术底层到效果落地5大核心评估
  • 2026年1月DeepSeek优化服务商口碑TOP10:从技术到效果转化的选型
  • Git代码规范
  • 亲测好用10个AI论文网站,继续教育学生轻松搞定毕业论文!
  • 37、SQL的Explain
  • 2026年主流GEO公司(服务商)选型与技术方案全景解析
  • sql存储
  • c++实现交互式地震层位解释的软件
  • JS DOM 操作与性能优化实战指南:构建高效可交互的页面结构 - 实践
  • 为什么要引入右值引用