数学和算法之---排列组合
来源:互联网 发布:oracle数据库备份语句 编辑:程序博客网 时间:2024/06/06 09:52
本文大部分内容摘自网络只是本人稍加整理分享,供大家学习交流。
排列的概念
从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
- 数学和算法之---排列组合
- 关于数学中排列组合之组合算法实现
- 算法_3 : 组合数学:排列组合
- 算法练习:排列组合之组合和
- 排列组合和回溯算法
- 排列组合之字符串的全排列和组合算法
- 组合数学之排列组合若干题
- 算法研究之排列组合公式
- 基础算法之排列组合生成算法
- 基础算法之排列组合生成算法
- 排列组合算法之 字典序排序算法
- 算法导论之数学归纳法和递归
- 数学排列组合算法 P(N,M) C(N,M)
- 排列组合之排列问题的算法实现
- 排列组合之组合问题算法实现
- 算法:排列组合之C(N,M)
- 排列组合算法之三: 递归法
- 算法练习:排列组合之翻译手机号码
- jvm基础入门
- How to transfer developer profile to one mac to another mac
- Codeforces Beta Round #89 (Div. 2) A题
- Makefile wildcard通配符使用方法。
- 多线程(二)——通过继承Thread类创建线程
- 数学和算法之---排列组合
- Java Junit测试例子
- lucene入门简单实现
- IOS7开发~API变化
- Cocos2Dx 内存管理封装
- 数据库设计技巧
- Drools & Guvnor 使用心得
- 引用计数
- 18种主流数据库:12种SQL+6种NoSQL