CSP初赛知识精讲--排列组合

2024-04-24 20:20

本文主要是介绍CSP初赛知识精讲--排列组合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第十一节 排列组合

基础知识

排列是指从给定个数的元素中取出指定个数的元素进行排序。
组合是指从给定个数的元素中仅仅取出指定元素个数的元素,不考虑排序。
 排列组合问题的关键就是研究给定要求的排列和组合可能出现的情况的总数。

定义与公式
排列:从n个不同元素中,任取m(m≤n,均为自然数)个不同的元素按照一定的顺序排成一列,所有排列的个数,称作从n个元素中取出m个元素的排列数。用符号 A ( n , m ) A(n,m) A(n,m) A n m A^m_n Anm表示。计算公式如下:
A n m = n ! ( n − m ) ! A^m_n=\frac{n!}{(n-m)!} Anm=(nm)!n!
组合:从n个不同元素中,任取m(m≤n)个元素并成一组,所有组合的个数,称作从n个元素中取出m个元素的组合数。用符号 C ( n , m ) C(n,m) C(n,m) C n m C^m_n Cnm表示。计算公式如下:
C n m = A n m m ! = n ! m ! ( n − m ) ! C^m_n=\frac{A^m_n}{m!}=\frac{n!}{m!(n-m)!} Cnm=m!Anm=m!(nm)!n!
基本计数原理
 加法原理:做一件事,完成它可以有n类办法,在第一类办法中有m1种不同的犯法,在第二类办法中有m2种不同的方法…在第n类办法中有mn种不同的方法,那么完成这件事共有 N = m 1 + m 2 + . . . + m n N=m_{1}+m_{2}+...+m_{n} N=m1+m2+...+mn种不同的方法。
 乘法原理:做一件事,完成它需要分成n个步骤,做第一步有m1种不同的方法,做第二步有m2种不同的方法…做第n步有mn种不同的方法,那么完成这件事共有 N = m 1 × m 2 × . . . × m n N=m_{1}×m_{2}×...×m_{n} N=m1×m2×...×mn种不同的方法。

范例精讲

例1 从一个 4 × 4 4×4 4×4的棋盘中选取不在同一行也不在同一列上的两个方格,共有( )种方法。
  A.60  B.72  C.86  D.64
 【正确答案:B】
解析:对每个方格来说,与其不在同一行同一列的方格有 3 × 3 = 9 3×3=9 3×3=9个,总共有 4 × 4 = 16 4×4=16 4×4=16个方格,也就是会有 16 × 9 16×9 16×9种,但是会有重复的情况(A格和B格,B格和A格,是一种情况),所以有 16 × 9 ÷ 2 = 72 16×9÷2=72 16×9÷2=72种。

例2 5个小朋友排成一列,其中有两个小朋友是双胞胎,如果要求这两个双胞胎必须相邻,则有( )种不同的排列方法。
  A.48  B.36  C.24  D.72
 【正确答案:A】
解析:我们可以把双胞胎先看成一个整体,则问题变成了4个人的排列问题,共有 A ( 4 , 4 ) = 24 A(4,4)=24 A(4,4)=24种,然后两个双胞胎内部的排列有 A ( 2 , 2 ) = 2 A(2,2)=2 A(2,2)=2种,所以共有 24 × 2 = 48 24×2=48 24×2=48种。

例3 有5副不同颜色的手套(共10只手套,每副手套左右手各一只),一次性从中取6只手套,请问恰好能配成两副手套的不同取法有( )种。
  A.120  B.180  C.150  D.30
 【正确答案:A】
解析:首先确定两副凑成一对的手套颜色组合用 C ( 5 , 2 ) = 10 C(5,2)=10 C(5,2)=10种。然后是不成一副手套的两个手套的选择,先确定颜色组合有 C ( 3 , 2 ) = 3 C(3,2)=3 C(3,2)=3种取法,再分左右手,每种颜色下又有 C ( 2 , 1 ) = 2 C(2,1)=2 C(2,1)=2种取法,总共 10 × 3 × 2 × 2 = 120 10×3×2×2=120 10×3×2×2=120种。

例4 由数字 1 、 1 、 2 、 4 、 8 、 8 1、1、2、4、8、8 112488所组成的不同的 4 4 4位数的个数是( )。
  A.104  B.102  C.98  D.100
 【正确答案:B】
解析:因为存在相同的值,不能一次性考虑完,需要分情况讨论。

  • 1 、 2 、 4 、 8 1、2、4、8 1248组成的 4 4 4位数: A ( 4 , 4 ) = 24 A(4,4)=24 A(4,4)=24种。
  • 1 、 1 、 2 、 4 、 8 1、1、2、4、8 11248组成的 4 4 4位数(一定有两个 1 1 1):先从 2 、 4 、 8 2、4、8 248三个数种选两个,再除去两个 1 1 1内部的重复排列: C ( 3 , 2 ) × A ( 4 , 4 ) / A ( 2 , 2 ) = 36 C(3,2)×A(4,4)/A(2,2)=36 C(3,2)×A(4,4)/A(2,2)=36种。
  • 1 、 2 、 4 、 8 、 8 1、2、4、8、8 12488组成的 4 4 4位数(一定有两个 8 8 8):同上,也有 36 36 36种。
  • 1 、 1 、 8 、 8 1、1、8、8 1188组成的 4 4 4位数:考虑两个 1 1 1和两个 8 8 8各自内部重复排列,共有 A ( 4 , 4 ) / ( A ( 2 , 2 ) × A ( 2 , 2 ) ) = 6 A(4,4)/(A(2,2)×A(2,2))=6 A(4,4)/(A(2,2)×A(2,2))=6种。
    总共: 24 + 36 + 36 + 6 = 102 24+36+36+6=102 24+36+36+6=102种。

例5 设含有 10 10 10个元素的集合的全部子集数位 S S S,其中由 7 7 7个元素组成的子集数位 T T T,则 T / S T/S T/S的值为( )。
  A. 5 / 32 5/32 5/32  B. 15 / 128 15/128 15/128  C. 1 / 8 1/8 1/8  D. 21 / 128 21/128 21/128
 【正确答案:B】
解析:每个元素选入子集和不选入子集两种选择, 10 10 10个元素就有210=1024种选择,即 S = 1024 S=1024 S=1024 T = C ( 10 , 7 ) = C ( 10 , 3 ) = 120 T=C(10,7)=C(10,3)=120 T=C(10,7)=C(10,3)=120 T / S = 120 / 1024 = 15 / 128 T/S=120/1024=15/128 T/S=120/1024=15/128

相同与不同、空与不空问题
盒子不空

  • 5个不同的小球放入3个不同的盒子(每盒不空),一共有多少种放法?
    C 5 2 C 3 2 A 2 2 A 3 3 + C 5 1 C 4 1 A 2 2 A 3 3 = 150 \frac{C^2_5C^2_3}{A^2_2}A^3_3+\frac{C^1_5C^1_4}{A^2_2}A^3_3=150 A22C52C32A33+A22C51C41A33=150
  • 5个不同的小球放入3个相同的盒子(每盒不空),一共有多少种放法?
    C 5 2 C 3 2 A 2 2 + C 5 1 C 4 1 A 2 2 A = 25 \frac{C^2_5C^2_3}{A^2_2}+\frac{C^1_5C^1_4}{A^2_2}A=25 A22C52C32+A22C51C41A=25
  • 5个相同的小球放入3个不同的盒子(每盒不空),一共有多少种放法?
    C 4 2 = 6 C^2_4=6 C42=6
  • 5个相同的小球放入3个相同的盒子(每盒不空),一共有多少种放法?
    1 + 1 = 2 1+1=2 1+1=2

盒子可空

  • 5个不同的小球放入3个不同的盒子(可有空盒),一共有多少种放法?
    3 5 = 243 3^5=243 35=243
  • 5个不同的小球放入3个相同的盒子(可有空盒),一共有多少种放法?
    1 + C 5 1 + C 5 2 + C 5 2 C 3 2 A 2 2 + C 5 1 C 4 1 A 2 2 = 41 1+C^1_5+C^2_5+\frac{C^2_5C^2_3}{A^2_2}+\frac{C^1_5C^1_4}{A^2_2}=41 1+C51+C52+A22C52C32+A22C51C41=41
  • 5个相同的小球放入3个不同的盒子(可有空盒),一共有多少种放法?
    C 7 2 = 21 C^2_7=21 C72=21
  • 5个相同的小球放入3个相同的盒子(可有空盒),一共有多少种放法?
    1 + 2 + 2 = 5 1+2+2=5 1+2+2=5

赛题训练

  1. 10个三好学生名额分配到7个班级,每个班级至少有一个名额,一共有( )种不同的分配方案。
     A.84 B.72 C.56 D.504
  2. 把8个同样的球放在5个同样的袋子里,允许有的袋子空着,共有( )种不同的分法。(提示:如果8个球都放在一个袋子里,无论是哪个袋子,都只算一种分法。)
     A.22 B.24 C.18 D.20
  3. 将7个名额分给4个不同的班级,允许有的班级没有名额,有( )种不同的分配方案。
     A.60 B.84 C.96 D.120
  4. 甲、乙、丙三位同学选修课程,从4门课程中,甲选修2门,乙、丙各选修3门,则不同的选修方案共有( )种。
     A.36 B.48 C.96 D.192
  5. 有7各一模一样的苹果,放到3个一模一样的盘子中,一共有( )种放法。
     A.7 B.8 C.21 D.37

这篇关于CSP初赛知识精讲--排列组合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/932750

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

dr 航迹推算 知识介绍

DR(Dead Reckoning)航迹推算是一种在航海、航空、车辆导航等领域中广泛使用的技术,用于估算物体的位置。DR航迹推算主要通过已知的初始位置和运动参数(如速度、方向)来预测物体的当前位置。以下是 DR 航迹推算的详细知识介绍: 1. 基本概念 Dead Reckoning(DR): 定义:通过利用已知的当前位置、速度、方向和时间间隔,计算物体在下一时刻的位置。应用:用于导航和定位,

CSP-J基础之数学基础 初等数论 一篇搞懂(二)

文章目录 前言算术基本定理简介什么是质数?举个简单例子:重要的结论:算术基本定理公式解释:举例: 算术基本定理的求法如何找出质因数:举个简单的例子: 重要的步骤:C++实现 同余举个例子:同余的性质简介1. 同余的自反性2. 同余的对称性3. 同余的传递性4. 同余的加法性质5. 同余的乘法性质 推论 总结 前言 在计算机科学和数学中,初等数论是一个重要的基础领域,涉及到整数

【H2O2|全栈】Markdown | Md 笔记到底如何使用?【前端 · HTML前置知识】

Markdown的一些杂谈 目录 Markdown的一些杂谈 前言 准备工作 认识.Md文件 为什么使用Md? 怎么使用Md? ​编辑 怎么看别人给我的Md文件? Md文件命令 切换模式 粗体、倾斜、下划线、删除线和荧光标记 分级标题 水平线 引用 无序和有序列表 ​编辑 任务清单 插入链接和图片 内嵌代码和代码块 表格 公式 其他 源代码 预

CSP-J基础之cmath常见函数

文章目录 前言1. **`sin` 函数**2. **`cos` 函数**3. **`exp` 函数**4. **`log` 函数**5. **`fabs` 函数**6. **`pow` 函数**7. **`sqrt` 函数**8. **`ceil` 函数**9. **`floor` 函数** 总结 前言 在计算机科学与编程中,数学函数是解决各种计算问题的基础工具。C++标准