概率组合题目分类

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. 完美数据迁移-MongoDB Stream的应用
  2. ahk编程_AHK编程可视化的实现
  3. 技术部门Leader是不是一定要技术大牛担任?
  4. 豆瓣评分9分+,每一部看完不禁感慨!这里是神州大地!
  5. java 蓝桥杯 算法训练 区间k大数查询(题解)
  6. 批量关停azure vm_如何从Azure VM数据库运行本地SQL报表
  7. python开发板卡驱动开发_一款能让你发挥无限创意的MicroPython开发板—TPYBoard开发板测...
  8. 多维多重背包问题_动态规划--背包问题
  9. 51nod1712 区间求和
  10. RK3288 开机时间和开机速度优化安卓系统优化
  11. java rxtx下载_1、下载64位rxtx for java 链接:http://fizzed.com/oss/rxtx-for-java2、下载下来的包解压后按照说明放到JAV...
  12. 适合java初级程序员找工作的项目
  13. 侦探小明:如何判断电脑里突然出现的流氓广告来自哪个软件?
  14. html阅读caj文件格式,caj文件怎么打开,caj转换成word(解决方案)
  15. 自学python就业_Python就业方向有哪些呀?适合小白学习吗?
  16. 微信中的dat文件到底是什么
  17. 权威证明共识(Proof of Authority)
  18. 又是一江春水自东流!
  19. 平板触控笔有哪些用途?超高性价比的触控笔推荐
  20. SELECT连表查询重复字段

热门文章

  1. 单元测试断言库:chai.js中文文档
  2. 使用Ajax传用户信息数据到后端
  3. python os.system()和os.popen()
  4. american主板网卡灯关机后还亮_七彩虹主板设置概述.pdf
  5. SQL Server 安全篇——SQL Server加密(1)——加密概念
  6. 第七次前端培训(JavaScript)
  7. 总结:word2007中插入页眉页脚和页码
  8. 如何设置Luminati Proxy Manager? Luminati+VMlogin=多个( Facebook, Google, 亚马逊,ebay)等帐号同时登录,批量管理且不被关联。
  9. 五金机电行业供应商智慧管理平台解决方案:优化供应链管理,带动企业业绩增长
  10. SMTP错误码/建议解决方法