【组合数学】OI内的排列与组合(简单版)
§1基本原理
△让我们来看下面问题:
从甲地到乙地,可以乘火车,也可以乘汽车,还可以乘轮船。一天中,火车有4班,汽车有2班,轮船有3班。那么,一天中乘坐这些交通工具从甲地到乙地共有多少种不同走法?
△分析:因为从甲地到乙地,乘火车有4种选择(方法),乘汽车有2种选择(方法),乘轮船有3种选择(方法)。因此,一天中乘坐这些交通工具从甲地到乙地共有:4+2+3 = 9种不同的方法。
▲一般地,做一件事,完成它可以有n类方法,在第一类办法中有m1种不同的方法,在第二类办法中有m2种不同的方法,……,在第n类办法中有m n种不同的方法,
那么完成这件事共有:N = m1+m2+…+m n种不同的方法。
一、加法原理:
△再看这样一个例子:
由A村去B村的道路有3条,由B村去C村的道路有2条(如下图所示)。从A村经B村去C村,共有多少种不同的走法?
△分析:从A村到B村有3种不同的走法,按这3种走法中的每一种走法到达B村后,再从B村到C村又有2种不同的走法。因此,从A村经B村去C村共有:3×2 = 6种不同的走法。
▲一般地,做一件事,完成它需要分成n个步骤,做完第一步有m1种不同的方法,做完第二步有m2种不同的方法,……,做第n步有m n种不同的方法。
那么,完成这件事共有:N = m1×m2×…×m n种不同的方法。
二、乘法原理:
〖举例〗
1. 书架上层放有6本不同的数学书,下层放有5本不同的语文书。
⑴从中任取一本,有多少种不同的取法?
⑵从中任取数学书与语文书各一本,有多少种不同的取法?
解:⑴分析:从书架上任取一本书,有两类情况:第1类情况是从上层取数学书,可以从6本书中任取一本,有6种方法;第2类情况是从下层取语文书,可以从5本书中任取一本,有5种方法。
根据加法原理,得到不同的取法的种数是: N = 6+5 = 11
⑵分析:从书架中任取数学书与语文书各一本,可以分成两个步骤:第1步取一本数学书,有6种方法;第2步取一本语文书,有5种方法。
根据乘法原理,得到不同的取法的种数是:N = 6×5 = 30
2. 由数字1,2,3,4,5可以组成多少个三位数(各位上的数字允许重复)?
解:分析:要组成一个三位数可以分成三个步骤:
根据乘法原理,得到可以组成的三位数的个数是:N = 5×5×5 = 5 3 = 125
▲不难发现,加法原理的要点是一个“类”字,乘法原理的要点是一个“步”字,即分“类”时用加法原理;分“步”时用乘法原理棗分清“类”与“步”是正确解题的关键。
△练习:
1.在读书活动中,一个学生要从2本科技书、2本政治书、3本文艺书里任选一本,共有多少种不同的选法?
2.乘积(a1+a2+a3)(b1+b2+b3+b4)(c1+c2+c3+c4+c5)展开后共有多少项?
3.如下图所示,从甲地到乙地有2条陆路可走,从乙地到丙地有3条陆路可走,又从甲地不经过乙地到丙地有2条水路可走。
⑴从甲地经乙地到丙地有多少种不同的走法?
⑵从甲地到丙地共有多少种不同的走法?

§2排列
△让我们来看下面这个例子:





巧用“捆绑”、“插空”、“分组”法解决排列组合题目
在求解排列组合问题时,经常遇到有关几个元素必须相邻、几个元素互不相邻、将n个元素分成m组的问题。现将此类问题的解法通过例题介绍如下。
例1 由数字1、2、3、4、5、6、7组成无重复数字的七位数。(1)求三个偶数必相邻的七位数的个数;(2)求三个偶数互不相邻的七位数的个数。
解 (1):因为三个偶数2、4、6必须相邻,所以要得到一个符合条件的七位数可以分为如下三步:第一步将1、3、5、7四个数字排好有P(4,4)种不同的排法;
第二步将2、4、6三个数字“捆绑”在一起有P(3,3) 种不同的“捆绑”方法; 第三步将第二步“捆绑”的这个整体“插入”到第一步所排的四个不同数字的五个“间隙”(包括两端的两个位置)中的其中一个位置上,有P(1,5)种不同的“插入”方法。根据乘法原理共有P(4,4)*P(3,3)*P(5,1)=720种不同的排法。所以共有720个符合条件的七位数。
解(2):因为三个偶数2、4、6 互不相邻,所以要得到符合条件的七位数可以分为如下两步:第一步将1、3、5、7四个数字排好,有P(4,4) 种不同的排法;
第二步将2、4、6分别“插入”到第一步排的四个数字的五个“间隙”(包括两端的两个位置)中的三个位置上,有P(3,5) 种“插入”方法。根据乘法原理共有P(4,4)*P(3,5)=1440种不同的排法。所以共有1440个符合条件的七位数。
例2 将A、B、C、D、E、F分成三组,共有多少种不同的分法?
解:要将A、B、C、D、E、F分成三组,可以分为三类办法:(1-1-4)分法、(1-2-3)分法、(2-2-2)分法。下面分别计算每一类的方法数:
第一类(1-1-4)分法,这是一类整体不等分局部等分的问题,可以采用两种解法。解法一:从六个元素中取出四个不同的元素构成一个组,余下的两个元素各作为一个组,有C(4,6)种不同的分法。
解法二:从六个元素中先取出一个元素作为一个组有C(1,6) 种选法,再从余下的五个元素中取出一个元素作为一个组有C(1,5) 种选法,最后余下的四个元素自然作为一个组,由于第一步和第二步各选取出一个元素分别作为一个组有先后之分,产生了重复计算,应除以P(2,2)。所以共有C(1,6)*C(1,5)/P(2,2) =15种不同的分组方法。
第二类(1-2-3)分法,这是一类整体和局部均不等分的问题,首先从六个不同的元素中选取出一个元素作为一个组有C(1,6) 种不同的选法,再从余下的五个不同元素中选取出两个不同的元素作为一个组有C(2,5) 种不同的选法,余下的最后三个元素自然作为一个组,根据乘法原理共有C(1,6)*C(2,5)=60种不同的分组方法。
第三类(2-2-2)分法,这是一类整体“等分”的问题,首先从六个不同元素中选取出两个不同元素作为一个组有C(2,6) 种不同的取法,再从余下的四个元素中取出两个不同的元素作为一个组有C(2,4)种不同的取法,最后余下的两个元素自然作为一个组。由于三组等分存在先后选取的不同的顺序,所以应除以P(3,3) ,因此共有C(2,6)*C(2,4)/P(3,3) =15种不同的分组方法。
根据加法原理,将A、B、C、D、E、F六个元素分成三组共有:15+60+15=90种不同的方法。
例3 一排九个坐位有六个人坐,若每个空位两边都坐有人,共有多少种不同的坐法?
解:九个坐位六个人坐,空了三个坐位,每个空位两边都有人,等价于三个空位互不相邻,可以看做将六个人先依次坐好有P(6,6)种不同的坐法,再将三个空坐位“插入”到坐好的六个人之间的五个“间隙”(不包括两端)之中的三个不同的位置上有C(3,5)种不同的“插入”方法。根据乘法原理共有P(6,6)*C(3,5)=7200种不同的坐法。
小结:(1)m个不同的元素必须相邻,有P(m,m) 种“捆绑”方法。
(2)m个不同元素互不相邻,分别“插入”到n个“间隙”中的m个位置有 P(m,n)种不同的“插入”方法。
(3)m个相同的元素互不相邻,分别“插入”到n个“间隙”中的m个位置,有C(m,n)种不同的“插入”方法。
(4)若干个不同的元素“等分”为 m个组,要将选取出每一个组的组合数的乘积除以P(m,m)。
希望这篇博文对您有所帮助!!
【组合数学】OI内的排列与组合(简单版)的更多相关文章
- OI内的排列与组合(简单版)
§1基本原理 △让我们来看下面问题: 从甲地到乙地,可以乘火车,也可以乘汽车,还可以乘轮船.一天中,火车有4班,汽车有2班,轮船有3班.那么,一天中乘坐这些交通工具从甲地到乙地共有多少种不同走法?△分 ...
- 字符串数组元素排列与组合的Java递归实现
我们在笔试面试过程中经常会遇到关于排列与组合的问题,其实这些可以通过递归简单的实现,看下面两个例子: (1)关于字符串排列的问题 输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串ab ...
- 排列与组合的C语言实现
排列与组合是数学里的经典问题,由这个问题可引申出子集.字典排序等问题,那么,我们先看经典的排列与组合,怎么在程序里实现. 在网上搜了一下,关注这个问题的人还是挺多的,有不了人给出的回答是使用几个for ...
- Lucene.net站内搜索—3、最简单搜索引擎代码
目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...
- dfs 生成排列和组合
利用深度优先搜索的性质可以方便的生成n的排列和组合,但是生成组合时每个组合里面元素的个数必须事先确定,以前以为生成组合跟排列一样到n时就可以回溯,直到今天做了某题之后才发现那是错的,那样做生成不了所有 ...
- 108_Power Pivot购物篮分析分组GENERATE之笛卡尔积、排列、组合
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 1.背景 昨天在看论坛帖子时候(帖子),看到一个关于SKU组合的问题,有很多M大佬都给出了处理方案,于是想用dax也写一个 ...
- 模板】AC自动机(简单版)
模板]AC自动机(简单版) https://www.luogu.org/problemnew/show/P3808 这是一道简单的AC自动机模板题. 用于检测正确性以及算法常数. 为了防止卡OJ,在保 ...
- 动手写一个简单版的谷歌TPU-矩阵乘法和卷积
谷歌TPU是一个设计良好的矩阵计算加速单元,可以很好的加速神经网络的计算.本系列文章将利用公开的TPU V1相关资料,对其进行一定的简化.推测和修改,来实际编写一个简单版本的谷歌TPU.计划实现到行为 ...
- JavaMail简单版实验测试
前言: 最近由于实现web商城的自动发送邮件功能的需求,故涉猎的邮箱协议的内部原理.现将简单版的Java Mail实例做个代码展示,并附上其中可能出现的bug贴出,方便感兴趣的读者进行测试! 1.载入 ...
随机推荐
- 音视频入门-02-RGB拼图
* 音视频入门文章目录 * 图片 & 像素点 & RGB 平时浏览的图片看不出像素点: 图片放大时,可以看出图片是一个个像素点组成的: 每个像素点的颜色可以用 RGB 表示: RGB ...
- 面试经典算法:马拉松算法,最长回文子串Golang实现
求一个字符串中最长的回文子串. package main import "fmt" /* 马拉松算法,求最长回文子串,时间复杂度:线性 */ func main() { // 回文 ...
- 简单标签(SimpleTag) 学习
一.由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编写和调用的SimpleTag接口 ...
- jQuery_jQuery的基本使用
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Linux--CentOS 安装 Docker 教程
本文主要介绍 CentOS 系统安装 Docker 的流程. 前提条件 OS 要求 CentOS7: The centos-extras repository must be enabled. Thi ...
- 【数字图像处理】帧差法与Kirsch边缘检测实现运动目标识别与分割
本文链接:https://blog.csdn.net/qq_18234121/article/details/82763385 作者:冻人的蓝鲸梁思成 视频分割算法可以从时域和空域两个角度考虑.时域分 ...
- css垂直居中如何实现
利用CSS3的transform:translate .center{ width:%; position: absolute; top: %; left: %; -moz-transform: tr ...
- golang GC(二 定位)
前面已经介绍过golang的GC算法.要是我们的程序在运行是因为GC导致行能下降,该如何定位呢?说实话,工作中由于对go的gc问题不重视,根本没考虑过这个问题,今天特意来补补课.
- Flutter——AspectRatio组件
AspectRatio 的作用是根据设置调整子元素 child 的宽高比. AspectRatio 首先会在布局限制条件允许的范围内尽可能的扩展,widget 的高度是由宽度和比率决定的,类似于 Bo ...
- sql server 某一列求和
sql server 某一列求和 SELECT 患者来源,设备类型,检查部位,设备名称,convert(char(10),STUDY_DATE,121) as 日期, count(distinct 就 ...