《排列与组合》野牛程序员少儿趣味讲解
作者:野牛程序员:2025-05-12 08:03:59数学阅读 2052
《排列与组合》野牛程序员少儿趣味讲解
🎲《排列与组合》少儿趣味讲解
懂得排列与组合,就像掌握了“数学魔法”!可以计算出各种可能性的数量!
🔢 一、排列是什么?
排列强调顺序不同算不同种。
📌 举例:
班里选出 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
