首页 > 其他分享 >【组合数学】错位排序

【组合数学】错位排序

时间:2022-08-24 00:11:35浏览次数:68  
标签:错位 盒子 数学 装进 号球 排序 个球

错位排序:编号为 \(1\) 到 \(n\) 的球装进编号 \(1\) 到 \(n\) 的盒子里,问每个球与它所在的盒子编号都不同的方案数。

公式:设 \(D_n\) 表示 \(n\) 个球的方案数,则:\(D_n=(n-1)(D_{n-1}+D_{n-2})\) 。

证明

设 \(D_n\) 前的都已求出,现在装第 \(n\) 个球:

规定 \(n\) 号装进 \(k\) 号盒子 ,再装 \(k\) 号球:

  • \(k\) 号球一定装进 \(n\) 号盒子,则剩余 \(n-2\) 个球错位排序,共 \(D_{n-2}\) 种
  • \(k\) 号球不能装进 \(n\) 号盒子,则等价于 把 \(n\) 号盒子当成 \(k\) 号盒子 ,这就变成把 \(n-1\) 个球错位排序,共 \(D_{n-1}\) 种

而 \(k\) 的范围是 \(1\) 到 \(n-1\),所以 \(D_n=(n-1)(D_{n-1}+D_{n-2})\) ,证毕。

标签:错位,盒子,数学,装进,号球,排序,个球
From: https://www.cnblogs.com/subtlemaple/p/16618347.html

相关文章

  • 链表冒泡排序
    publicListNodesortList(ListNodehead){ListNodeheadpre=newListNode();headpre.next=head;intlength=0;while(head!=null){......
  • 服务器性能参数学习与总结
    服务器性能参数学习与总结总体说明在不考虑奸商和回扣的的情况下:同时间段购买的机器,价钱越高,配置越高,机器的性能越好.其实服务器与PC机器一样,高性能往往意味着......
  • 数组排序方法sort---案例
    <template><divclass="Leading"><h2>人员列表</h2><inputtype="text"placeholder="请输入名字"v-model="keyword"><br><!--{{keyword}}-->......
  • [Google] LeetCode 1610 Maximum Number of Visible Points 极角排序
    Youaregivenanarraypoints,anintegerangle,andyourlocation,wherelocation=[posx,posy]andpoints[i]=[xi,yi]bothdenoteintegralcoordinateson......
  • 排序算法
    排序算法学了几年算法了,回头看几种排序算法居然不会。。。。偷了菜鸟驿站的图不会很认真的分析时间复杂度、空间复杂度,重在实现。冒泡排序比较相邻的元素。如果第一......
  • 归并排序
    packageclass08;/***归并排序*<p>*时间复杂度:O(N*logN)*描述:*1.数组长度N,步长step去追N,1变2,2变4,4变8。。。*所以step变了几次?logN次。*2.step每......
  • Python的几种lambda排序方法
    1.对单个变量进行排序#lst=[[5,8],[5,3],[3,1]]lst.sort(key=lambdax:x[1])#lst=[[3,1],[5,8],[5,3]]以元素的第二个元素升序排列2.对多个变量进行排序......
  • LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置
    34.在排序数组中查找元素的第一个和最后一个位置思路:与AcWing789一致classSolution{public:vector<int>searchRange(vector<int>&nums,inttarget){......
  • 复杂度分析、排序算法、二分法、堆的上调和下调
    1.认识复杂度与排序算法复杂度:认识时间复杂度就是看进行了多少次常数操作。(什么是常数操作?赋值、加减乘除运算等都是。调用API操作就不是如list.get(i)。)时间复杂度:在......
  • java算法:快速排序
    快速排序有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“61279345108”这个10个数进行......