福州网站设计哪家好,网站赏析案例,微网站 前景,搜索词和关键词大家好#xff0c;我是清墨#xff0c;欢迎收看《C进阶课程——排列与组合》。 啊#xff0c;上一期我们的情况啊也是非常好的#xff0c;今天直接开始#xff01; 排列#xff08;Arrange#xff09; 与上期一样啊#xff0c;我们先了解一下排列的概念。
排列是指将…大家好我是清墨欢迎收看《C进阶课程——排列与组合》。 啊上一期我们的情况啊也是非常好的今天直接开始 排列Arrange 与上期一样啊我们先了解一下排列的概念。
排列是指将一组事物按照一定的顺序进行摆放的方式。在数学中排列是指从一组事物中选取若干个进行组合并按照特定的顺序进行排列的方法。
至于怎样表示呢就用表示从n个元素中选择m个元素进行排列所有的方案数。
是n的全排列结果是n的阶乘n!。
计算 。 组合Combination 组合是从给定的元素集合中选取一些元素的方式。在组合中选取的元素的顺序是不重要的也就是说(1,2,3)和(3,2,1)被视为相同的组合。
至于怎样表示呢就用表示从n个元素中选择m个元素进行组合所有的方案数。
计算 海题——杨辉三角 题目描述
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1上面的图形熟悉吗如果还没看出来它的特点的话不妨再调整一下格式 11 11 2 11 3 3 11 4 6 4 1
1 5 10 10 5 1是不是看出这些数字的特点了这是大名鼎鼎的杨辉三角。
今天我们试着来输出 n 行的杨辉三角数字。
输入格式 1 个正整数n。
输出格式 相应层数的杨辉三角数字。
样例
输入数据 1
6输出数据 1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1代码
#includebits/stdc.h
using namespace std;
int n,a[111][111];
int main(){cinn;a[1][1]1;a[2][1]1;a[2][2]1;for(int i3;in;i){for(int j1;jn;j){a[i][j]a[i-1][j]a[i-1][j-1];}}for(int i1;in;i){for(int j1;ji;j){couta[i][j] ;}coutendl;}return 0;
} 杨辉三角有什么用呢先买个管子进入例题。 例题1.派水果 题目描述
若一位母亲手里有 m 个相同的苹果还有 n 个相同的梨在 mn 天内分给她的小孩每天分 1 个水果有多少种不同的分派方案?。
输入格式 两个整数 m 和 n ( 1≤m,n≤32)。
输出格式 一个整数。结果不超出 max long long
样例
输入数据 1
2 3输出数据 1
10 分析题目 本题确定了苹果的位置就可以确定梨的位置又因为苹果和梨都相同所以不用考虑顺序。
只用求 或 就可以了。
所以。
但是直接计算必须会超在我们计算32的阶乘时就会溢出。 “e35”10的35次方超出了long long范围那要怎样计算呢 找规律 我们不妨试试小点的C。
用原本的代码计算小一点的。
#includebits/stdc.h
using namespace std;
long long ans11,ans21,n,m;
int main(){cinnm;nm;for(long long in;in-m1;i--){ans1*i;}for(long long im;i1;i--){ans2*i;}coutans1/ans2;return 0;
}
得
1
1
2 1
3 3 1
4 6 41
有点感觉了吗
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
杨辉三角 代码 写得代码
#includebits/stdc.h
using namespace std;
long long n,a[11100][11000],m;
int main(){cinnm;nm;a[1][1]1;a[1][2]1;for(int i2;in;i){for(int j1;jn;j){a[i][j]a[i-1][j]a[i-1][j-1];}}couta[n][n-m1];return 0;
}
所以杨辉三角可不只是数学游戏和海题在实际应用中有大用。例如在计算组合方案数的时候C(n, m) C(n-1,m) C(n-1, m-1)从而避免了组合公式中的除法运算除法运算的计算机代码要复杂很多远远没有加法容易处理。
我们下期再见。