【组合数学】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.载入 ...
随机推荐
- VS2013+WDK8.1 驱动开发环境配置
Windows Driver Kit 是一种完全集成的驱动程序开发工具包,它包含 WinDDK 用于测试 Windows 驱动器的可靠性和稳定性,本次实验使用的是 WDK8.1 驱动开发工具包,该工具 ...
- sql 触发器里,发生错误,回滚提示错误语句
SET @msg='错误消息'; RAISERROR(@msg, 16, 1); ROLLBACK TRANSACTION; ...
- 货币转换C
描述 人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中: ...
- socket基本用法
socket介绍 1.什么是socket socket是应用层与传输层中间的一个软件抽象层,它是一组接口.它把TCP/IP这些复杂的协议统一封装起来 这样我们只要知道如何使用socket就好,就已经符 ...
- 关于Objective C的私有函数
(1)很多从其他语言(例如C++)转到objective c的初学者,往往会问到一个问题,如何定义类的私有函数?这里的“私有函数”指的是,某个函数只能在类的内部使用,不能在类的外部,或者派生类内部使用 ...
- sql创建临时表并且插入数据
if OBJECT_ID('tempdb..#temp') is not null drop table #temp select * into #temp from ( --select * fro ...
- IDEA 导入jar包
项IDEA的项目中导入下载好的jar包: 在intelij IDEA 中,点击File-Project Structure,出现界面的左侧点击Modules,然后点击“+”. 然后找到你要导入的jar ...
- Image Processing and Analysis_8_Edge Detection:Statistical edge detection_ learning and evaluating edge cues——2003
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- VMware Workstation 14 安装使用 (小白安装使用教程)
在一台 PC 上运行多个操作系统,借助 VMware Workstation Pro,您可以在同一台 Windows 或 Linux PC 上同时运行多个操作系统.创建真实的 Linux 和 Wind ...
- RHEL7启动到命令模式
打开/etc/inittab 文件会看到以下信息 从中知道想要启动后就进入完整的多用户文本模式(命令行模式) 以root权限执行: ln -sf /lib/systemd/system/multi-u ...