概率组合题目分类

1.高中数学为基础的古典概率计算方法

2.斐波那契数列和卡特兰数

6x9的方格,从左上角到右下角,每次只能向下或向右,一共多少种不同走法

一共13步,五步向下,剩下8步向右

组合问题C13 5= C13 8=1287种

ABCDEFG七人站队,A必须在B的左边,求不要求相邻与必须相邻有多少种排法

不要求相邻:7!/2 = 2520种

要求相邻:把AB看成一个人即可,6!=720种

六个人排成一排,要求甲与乙不相邻,并且甲与丙不相邻的排法数是多少

方法一:

6个人全排列6! = 720

甲乙相邻(甲乙看成一个人):2*5! = 240

甲丙相邻:2*5!=240

甲与乙和丙都相邻的重复减去了一份(甲乙丙看成一个人):2*4! = 48

答案:720-240-240+48 = 288种

方法二:

甲在最左侧72种

同理,右侧72种

甲在中间4个任意位置,左右两边的可从非乙丙人员的3个人中抽2个(6种)

6x3!=36种,一共4个位置,36x4=144种

总数=72+72+144 = 288种

10颗相同的糖果,分给3个人,每人至少一颗,问有多少种分法

运用隔板法:

10个糖果中间的位置为9个,插入2个隔板,分成3分即可

组合问题 故为36种

10个不同的球,放入三个桶中

每个球有3种选择,故此为3的10次方 = 59049种

有10颗糖,如果每天至少吃一颗,吃完为止,问有多少种不同的吃法

一天吃完:1种

二天吃完(用插板法):C9 1

三天吃完:C9 2

运用二项式定理的内容累加所有方法

2的9次方 = 512种

合法左括号与右括号问题

左括号数量为n,右括号数量为n,总排列数位C2n n

左括号设为1

右括号设为-1

可以证明,每一个非法的排列通过变换公式,都可以得到n+1个1和n-1个-1所组成的排列。

所以不合法的排列数=n+1个1和n-1个-1组成的排列数C2n n+1或者C2n n-1

合法排列数为=C2n n - C2n n+1 = 1/(n+1)*C2n n [著名的卡特兰重要公式之一 ]

n个数进出栈的顺序有多少种?假设栈容量无限大

进栈当作左括号,出栈当作右括号,即可用以上一题来解答了

2n个人排队买票,n个人拿5块钱,n个人拿10块钱,票价是5块钱一张,售票员手里没有零钱,问多少种排队方法让售票员可以顺利卖票

5块钱必须够用来找零,故此让拿5块钱的相当于左括号,拿10块钱的相当于右括号即可

求n个无差别的节点构成的二叉树有多少种不同的结构?

假设n个无差别的节点构成不同的结构数为f(n)

f(0) =1,f(1) = 1,f(2) = 2,f(3) = 5时

f(n) = f(0)xf(n-1)+f(1)xf(n-2)+f(3)xf(n-4)+…+f(n-1)xf(0) = 1/(n+1)xC2n n

卡特兰数重要公式2

12个高矮不同的人,排成两排,每排必须从矮到高,而且第二排比对应的第一排的人高,问排列有多少种

隐藏很深的卡特兰数问题

0:第一排

1:第二排

任意一个前缀不能出现1比0多的情况

有n个信封,包含n封信,现在把信拿出来,再装回去,要求每封信不能装回它原来的信封,问有多少种装法?

对于n封信按照题目要求的装法即为f(n)

假设第n封信放入了第i个信封

情况一:第i封信也放入了第n个信封中,后续为f(n-2)

情况二:第i封信没有放入第n个信封中,后续为f(n-1)

n封信放入i个信封,i的选择有n-1种

所以总数为f(n) = (n-1)x(f(n-1)+f(n-2))

必知C++算法之排列组合基本操作相关推荐

  1. 算法题-排列组合问题

    27.Algorithm Gossip: 排列组合 说明 将一组数字.字母或符号进行排列,以得到不同的组合顺序,例如1 2 3这三个数的排列组合有:1 2 3.1 3 2.2 1 3.2 3 1.3 ...

  2. 程序员必备算法,排列组合

    还记得排列组合吗? 在高中的时候最常接触的莫过于排列组合了,毕竟高考必考的嘛.我们先来回忆下这两个的公式是啥: 排列组合公式 如果看到这个还有一丢丢的印象,说明大家的基础都还不错.那么问题来了,大家都 ...

  3. [算法] 求排列组合: 从n个数中任选m个数组成一个新数

    #include <iostream> #include <vector>using namespace std;// 求排列组合算法: C(n, m): 从n个数中任选m个数 ...

  4. DFS算法模板-排列组合-python

    DFS算法模板: def dfs(array or root, cur_layer, path, result):if cur_layer == len(array) or not root:resu ...

  5. 算法笔记 --- 排列组合

    排列组合的计算公式 转载于:https://www.cnblogs.com/zhongzhiqiang/p/5809116.html

  6. C++经典算法题-排列组合

    27.Algorithm Gossip: 排列组合 说明 将一组数字.字母或符号进行排列,以得到不同的组合顺序,例如1 2 3这三个数的排列组合有: 1 2 3.1 3 2.2 1 3.2 3 1.3 ...

  7. 数学和算法之---排列组合

    本文大部分内容摘自网络只是本人稍加整理分享,供大家学习交流. 排列的概念 从n个不同的元素中,任取m(m<=n)个元素按照一定的顺寻排成一列,叫做从n个不同元素中取出m个元素的一个排列.从n个不 ...

  8. 快速pow算法c语言_嵌入式必知基础算法(二)

    七.二分法 在一个数组中,知道一个数值,想确定他在数组中的位置下标,如数组:A[5] = {1,2,6,7,9};我知道其中的值为6,那么他的下标位置就是3. 八.限幅滤波法 对于随机干扰 , 限幅滤 ...

  9. 算法 64式 17、排列组合算法整理

    1算法思想 排列组合 1.1含义 排列: 含义:从元素列表中取出指定个数的元素进行排序 公式:从n个不同元素中取出m个元素的排列个数=n!/(n-m)! 组合: 含义:从元素列表中取出指定个数的元素, ...

最新文章

  1. 还搞不懂 Java NIO?快来读读这篇文章!
  2. ASP.Net TextBox只读时不能通过后台赋值取值
  3. 15、解决14中csv用excel打开乱码的问题 open('zhihu.csv','w',newline='',encoding='utf-8-sig')...
  4. django-csrftoken跨站请求伪造
  5. 将JSON对象带有格式的写出到文件中
  6. 移动互联消亡者及原因分析
  7. WMI-Win32_BIOS 参数说明
  8. LaTeX技巧005:定制自己炫酷的章节样式实例
  9. event.srcElement 说明 方法 技巧
  10. 机器学习之路: python 支持向量机 LinearSVC 手写字体识别
  11. 解决办法:access restriction is not accessible due to restriction
  12. ExtJS应用架构设计(二)
  13. Hibernate 泛型实现 dao 层的基类
  14. 三种百度网盘加速器,轻松突破10M/S,总有一款适合你!
  15. 知识图谱(Knowledge Graph)
  16. 图片怎么批量转换格式?
  17. java多个文件加密压缩_Java实现自动压缩文件并加密的方法示例
  18. 在Linux安装Kafka监控系统EFAK
  19. setsockopt 设置socket
  20. uva10635 Prince and Princess

热门文章

  1. REVIT建模“族类别和族参数”中的“总是垂直”“基于工作平面”怎么用?
  2. 并行:四种C+OpenMP计算π的并行程序
  3. PaaS architecture
  4. StackFrame
  5. python如何保存excel文件
  6. STM32驱动NRF24L01
  7. android5.0刷机,一加手机怎么升级安卓5.0 一加手机刷Android 5.0教程
  8. java模拟点击_java 模拟用户点击事件
  9. 会声会影如何修整剪辑视频素材
  10. java 过期数据_TTL过期的数据包丢失