我是靠谱客的博主 诚心马里奥,最近开发中收集的这篇文章主要介绍排列组合(递推矩阵),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

排列与组合有什么区别?

排列与元素的顺序有关,组合与顺序无关。
排列与组合


如何递推出对应的排列组合呢?

①组合
通过上面的组合公式可以得到下面的数据表格

nm0123456
00000000
11000000
21200000
31360000
4141224000
515206012000
61630203607200

组合递推式
f[n][m] = f[n][m-1] * ( n - m + 1)

②、排列
通过上面的排列公式可以得到下面的数据表格

nm0123456
01000000
11100000
21210000
31331000
41464100
5151010510
61615201561

排列递推式
f[n][m] = f[n-1][m-1] + f[n-1][m]


代码实现

①组合

//组合
void A(int n){
   for(int i=0; i<=n; i++)
   	f[i][0] = 1;
   for(int i=1; i<=n; i++)
   for(int j=1; j<i; j++)
   	f[i][j] = f[i][j-1] * ( i - j + 1);
}

②、排列

//排列
void C(int n){
	//初始化
   for(int i=0; i<=n; i++)
   	f[i][0] = f[i][i] = 1;
   	
   //递推
   for(int i=1; i<=n; i++)
   for(int j=1; j<i; j++)
   	f[i][j] = f[i-1][j-1] + f[i-1][j];
}

当要求多组排列组合数时,提前生成排列组合矩阵能够有效避免重复运算,提高程序性能。

最后

以上就是诚心马里奥为你收集整理的排列组合(递推矩阵)的全部内容,希望文章能够帮你解决排列组合(递推矩阵)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(133)

评论列表共有 0 条评论

立即
投稿
返回
顶部