zoukankan      html  css  js  c++  java
  • 离散数学知识点总结(6)-计数技术

    鸽巢原理:若将n只鸽子置于m个笼子中, 则至少有一个笼子需容纳 ⌊(n-1)/m⌋+1个

    容斥原理......

    乘法原理、加法原理:...... 

    如果有4个男孩和4个女孩坐成一排,每个人旁边都只能坐着异性,那么共有多少种坐的方式? 2*4!*4!

    由a, b, b, e, e, h, i, s, s, t, t, t可以组成多少个长度为12的字符串?C(12, 3)*C(9, 2)*C(7, 2)*C(5, 2)*3!=9979200 

    从(0, 0)点出发沿x轴或y轴的正方向每步走一个单位,最终走到(m, n)点,有多少条路径? C(m+nm)=C(m+n, n) 

    集合{1, 2, 3, ..., n}上的单调递增函数数量?就是要求(1 , 1)到(n+1 , n)上的非降路径数量C(2n-1, n)

    从集合{1, 2, 3, ..., m}到{1, 2, 3, ..., n}上的单调函数数量是2C(m+n-1, m)

    ⭐️n个结点依次进栈,出栈顺序有多少种?

    假设x轴代表进栈、y轴代表出栈,则x≥y,即路径从(0 , 0)到(n , n)但始终不越过对角线

    假设路径越过了对角线并与y=x+1交于P,将(0,  0)到P的部分沿着y=x+1翻转,从(-1 , 1)到(n , n)的非降路径数就是C(2n, n-1)

    故不越过对角线的非降路径数就是C(2n, n)-C(2n, n-1)=C(2n, n)/(n+1)

    此外也可以用生成函数的方法解答

    错排数/蒙特莫特数D(n)

    方法1:建立递推关系

    第1步,选择第n个元素的位置,共有n-1种方法(假定放在编号为k的位置) 

    第2步,选择第k个元素的位置,有两种可能 

    第k个元素放在编号为n的位置,此时剩下的n-2个元素进行错排即可,方案数是D(n-2) 

    ‚或者第k个元素不在编号为n的位置,此时把编号为n的位置视作编号为 k 的位置,将 n-1 个元素进行错排即可,方案数是 D(n-1)

    由此得到递推关系D(n)=(n-1)(D(n-2)+D(n-1))初值D(1)=0 和 D(2)=1  

    方法2:应用容斥原理。 

    n个元素的全排列有n!个,用集合Ak表示第k个位置是第k个元素(也即元素k没有发生错排)的所有排列 

    |Ai|=(n-1)!

    |Ai∩Aj|=(n-2)!

    |Ai∩Aj∩Ak|=(n-3)!

    …… 

    |A1∩A2∩…∩An|=0! 

  • 相关阅读:
    基于visual c++之windows核心编程代码分析(33)实现防火墙模型
    基于visual c++之windows核心编程代码分析(31)SNMP协议编程
    未来的职业?
    关于 Delphi 中流的使用(8) 压缩与解压缩的函数
    Delphi 中的 XMLDocument 类详解(2) 记要
    Delphi 中的 XMLDocument 类详解(1) 等待研究的内容
    关于 Delphi 中流的使用(5) 组件序列化
    关于 Delphi 中流的使用(6) 用流读写结构化文件
    xml 语法提示
    关于 Delphi 中流的使用(4) 遍历读取流中的所有数据
  • 原文地址:https://www.cnblogs.com/yangyuliufeng/p/10680662.html
Copyright © 2011-2022 走看看