《排列与组合》野牛程序员少儿趣味讲解
作者:野牛程序员:2025-05-12 08:03:59数学阅读 2374
《排列与组合》野牛程序员少儿趣味讲解
?《排列与组合》少儿趣味讲解
懂得排列与组合,就像掌握了“数学魔法”!可以计算出各种可能性的数量!
? 一、排列是什么?
排列强调顺序不同算不同种。
? 举例:
班里选出 3 名学生站队,排成一行,顺序不同视为不同排列。
小红、小明、小刚:
小红-小明-小刚
小明-小红-小刚
小刚-小红-小明
…都算不同的排列!
✅ 排列公式(A)
从 n 个中选 r 个,顺序有关:
A(n,r)=n×(n−1)×(n−2)×⋯×(n−r+1)
或简写为:
A(n,r)=n!/(n−r)!
? 二、组合是什么?
组合不看顺序,只关注选了哪些人。
? 举例:
小红、小明、小刚选出 2 人参加活动,不管站位,只要是这两人就一样。
小红、小明
小明、小红 ← 这两个算一种!
✅ 组合公式(C)
从 n 个中选 r 个,不看顺序:
C(n,r)=n!/r!⋅(n−r)!
? 三、C++ 代码演示(阶乘、排列、组合)
#include <iostream>
using namespace std;
// 阶乘函数
long long factorial(int n) {
long long result = 1;
for(int i = 2; i <= n; ++i)
result *= i;
return result;
}
// 排列数 A(n, r)
long long permutation(int n, int r) {
return factorial(n) / factorial(n - r);
}
// 组合数 C(n, r)
long long combination(int n, int r) {
return factorial(n) / (factorial(r) * factorial(n - r));
}
int main() {
int n = 5, r = 3;
cout << "从 " << n << " 个中选 " << r << " 个的排列数 A(n, r) = " << permutation(n, r) << endl;
cout << "从 " << n << " 个中选 " << r << " 个的组合数 C(n, r) = " << combination(n, r) << endl;
return 0;
}✅ 输出:
从 5 个中选 3 个的排列数 A(n, r) = 60 从 5 个中选 3 个的组合数 C(n, r) = 10
? 四、生活中的应用场景
| 场景 | 属于哪类 |
|---|---|
| 安排座位 | 排列 |
| 抽奖选人 | 组合 |
| 排名次、分顺序 | 排列 |
| 抽队员组成小组,不看顺序 | 组合 |
✍️ 练习题(可打印打卡)
6 个孩子排成一行,有多少种站法?
从 10 个中选出 3 个送礼物,不看顺序,有几种方案?
选班长、副班长从 20 人中选出,一共多少种可能组合(有顺序)?
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

