数学和算法之---排列组合
本文大部分内容摘自网络只是本人稍加整理分享,供大家学习交流。
排列的概念
从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
数学和算法之---排列组合相关推荐
- [算法] 求排列组合: 从n个数中任选m个数组成一个新数
#include <iostream> #include <vector>using namespace std;// 求排列组合算法: C(n, m): 从n个数中任选m个数 ...
- 算法题-排列组合问题
27.Algorithm Gossip: 排列组合 说明 将一组数字.字母或符号进行排列,以得到不同的组合顺序,例如1 2 3这三个数的排列组合有:1 2 3.1 3 2.2 1 3.2 3 1.3 ...
- 程序员必备算法,排列组合
还记得排列组合吗? 在高中的时候最常接触的莫过于排列组合了,毕竟高考必考的嘛.我们先来回忆下这两个的公式是啥: 排列组合公式 如果看到这个还有一丢丢的印象,说明大家的基础都还不错.那么问题来了,大家都 ...
- DFS算法模板-排列组合-python
DFS算法模板: def dfs(array or root, cur_layer, path, result):if cur_layer == len(array) or not root:resu ...
- 算法笔记 --- 排列组合
排列组合的计算公式 转载于:https://www.cnblogs.com/zhongzhiqiang/p/5809116.html
- C++经典算法题-排列组合
27.Algorithm Gossip: 排列组合 说明 将一组数字.字母或符号进行排列,以得到不同的组合顺序,例如1 2 3这三个数的排列组合有: 1 2 3.1 3 2.2 1 3.2 3 1.3 ...
- 必知C++算法之排列组合基本操作
概率组合题目分类 1.高中数学为基础的古典概率计算方法 2.斐波那契数列和卡特兰数 6x9的方格,从左上角到右下角,每次只能向下或向右,一共多少种不同走法 一共13步,五步向下,剩下8步向右 组合问题 ...
- c++ 排列组合_高中数学:十二类典型排列组合问题
一.相邻问题捆绑法 所谓"捆绑法",就是在解决对于某几个元素相邻的问题时,可整体考虑将相邻元素视作一个"大"元素. 例1.6名同学排成一排,其中甲.乙两人必须排 ...
- 算法 64式 17、排列组合算法整理
1算法思想 排列组合 1.1含义 排列: 含义:从元素列表中取出指定个数的元素进行排序 公式:从n个不同元素中取出m个元素的排列个数=n!/(n-m)! 组合: 含义:从元素列表中取出指定个数的元素, ...
最新文章
- 学python要多少钱-学python去培训班要多少钱?
- c语言字符串子串查找_字符串操作的全面总结
- LiveVideoStack线上分享第五季(十三):高性能视频硬件编码
- 闽高校计算机二级c语言模拟器,闽高校计算机二级C语言模拟卷及答案.doc
- java hanoi塔问题_java 解决汉诺塔问题
- 什么是java的元数据_学习大数据,为什么要先学习Java?
- CSDN 独家对话阿里云贾扬清、华先胜等大咖,剧透阿里云原生技术密码
- 有关Linux下的一些配置
- [Swift]LeetCode229. 求众数 II | Majority Element II
- 《Spring微服务实战》读书笔记——构建微服务
- 算法第四版开发环境的配置
- #linux# gcc编译优化-O0 -O1 -O2 -O3 -OS说明
- 云计算设计模式翻译(五):Compute Resource Consolidation Pattern
- Linux静态库与动态库的概念及制作
- linux 内功修炼之一 cpu
- H3C-WX2510H对接OpenPortal网络准入认证计费系统实现Mac快速认证+Portal认证
- php中文分隔符,php断句无乱码,PHP根据分隔符断句,中英文无乱码
- 通信算法之六十:SC_FDE系统的物理层算法设计与工程实现
- CMake 使用方法 http://www.cnblogs.com/lyq105/archive/2010/12/03/1895067.html
- 51单片机测温加万年历