本文大部分内容摘自网络只是本人稍加整理分享,供大家学习交流。

排列的概念

从n个不同的元素中,任取m(m<=n)个元素按照一定的顺寻排成一列,叫做从n个不同元素中取出m个元素的一个排列。从n个不同元素中取出m个元素的排列的个数,叫做从n个不同的元素中取出m个元素的排列数,用p(n,m)表示。

排列的公式

p(n,m)=n(n-1)(n-2)……(n-m+1)= n!/(n-m)!(规定0!=1).

组合的概念

从n个不同元素中,任意取出m个元素排成一组,叫做从n个不同元素中取出m个元素的而一个组合;从n个不同元素中取出m个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数,用符号 c(n,m)表示。

组合的公式

c(n,m)=p(n,m)/m!=c(n,n-m))

排列组合的案例

Q1: 有从1到9共计9个号码球,请问,可以组成多少个三位数?
A1: 123和213是两个不同的排列数。即对排列顺序有要求的,既属于“排列P”计算范畴。
上问题中,任何一个号码只能用一次,显然不会出现988,997之类的组合, 我们可以这么看,百位数有9种可能,十位数则应该有9-1种可能,个位数则应该只有9-1-1种可能,最终共有9*8*7个三位数。计算公式=P(9,3)=9*8*7,就这么简单,其实我们只要牢记公式,就能帮助我们解决生活中的问题。

Q2: 有从1到9共计9个号码球,请问,如果三个一组,代表“三国联盟”,可以组合成多少个“三国联盟”?
A2: 213组合和312组合,代表同一个组合,只要有三个号码球在一起即可。即不要求顺序的,这便是组合。正如A2中说的,213和312 所要表达的结果是一样的,都是由“1,2 和 3 ”这3 个数组合的。那么,我们就要考虑,怎么排除这种情况。

就拿结果是有“1、2、3”这个来做例子分析。

在结果是“1,2,3”这个情况中,考虑按顺序拿出来的情况是:第一次可以在3个数(1,2 或3)中选1个,第二次可以在剩下的2个数中选1个。。。也就是说他们的按顺序出现的可能有:3*2*1 种。但是只看结果,不看顺序,那么就重复了3*2*1次。

同理,你可以想到,每一个结果中,他们按顺序出现的种数都是6种。也就是说,每一种结果都重复了3*2*1次,

所以要除以3*2*1。

所以A2最终结果为:C(3,9 )= C(9,3)/C(3,9) =  9*8*7/3*2*1=84

数学和算法之---排列组合相关推荐

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

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

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

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

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

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

  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. 必知C++算法之排列组合基本操作

    概率组合题目分类 1.高中数学为基础的古典概率计算方法 2.斐波那契数列和卡特兰数 6x9的方格,从左上角到右下角,每次只能向下或向右,一共多少种不同走法 一共13步,五步向下,剩下8步向右 组合问题 ...

  8. c++ 排列组合_高中数学:十二类典型排列组合问题

    一.相邻问题捆绑法 所谓"捆绑法",就是在解决对于某几个元素相邻的问题时,可整体考虑将相邻元素视作一个"大"元素. 例1.6名同学排成一排,其中甲.乙两人必须排 ...

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

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

最新文章

  1. 学python要多少钱-学python去培训班要多少钱?
  2. c语言字符串子串查找_字符串操作的全面总结
  3. LiveVideoStack线上分享第五季(十三):高性能视频硬件编码
  4. 闽高校计算机二级c语言模拟器,闽高校计算机二级C语言模拟卷及答案.doc
  5. java hanoi塔问题_java 解决汉诺塔问题
  6. 什么是java的元数据_学习大数据,为什么要先学习Java?
  7. CSDN 独家对话阿里云贾扬清、华先胜等大咖,剧透阿里云原生技术密码
  8. 有关Linux下的一些配置
  9. [Swift]LeetCode229. 求众数 II | Majority Element II
  10. 《Spring微服务实战》读书笔记——构建微服务
  11. 算法第四版开发环境的配置
  12. #linux# gcc编译优化-O0 -O1 -O2 -O3 -OS说明
  13. 云计算设计模式翻译(五):Compute Resource Consolidation Pattern
  14. Linux静态库与动态库的概念及制作
  15. linux 内功修炼之一 cpu
  16. H3C-WX2510H对接OpenPortal网络准入认证计费系统实现Mac快速认证+Portal认证
  17. php中文分隔符,php断句无乱码,PHP根据分隔符断句,中英文无乱码
  18. 通信算法之六十:SC_FDE系统的物理层算法设计与工程实现
  19. CMake 使用方法 http://www.cnblogs.com/lyq105/archive/2010/12/03/1895067.html
  20. 51单片机测温加万年历

热门文章

  1. 同一个类中不同方法之间的互相调用
  2. 必示科技2020年度告警数据挖掘方向顶会论文分享
  3. 网优5g前景_5G网络优化师前景怎么样?
  4. 深入浅出PaddlePaddle函数——paddle.Tensor
  5. alpine的介绍与使用
  6. IP数据包在网络中的传输过程
  7. Python-IO编程和异常
  8. pip被卸载了,如何再重新安装
  9. 什么是搜索引擎蜘蛛(spider)
  10. mysql错误42000_mysql5.7 异常ERROR 1055 (42000)