排列函数与组合函数

本文详细介绍了C++中用于计算组合和排列的CC和AA函数,通过约分和阶乘的方法实现,展示了如何使用这两个函数进行计算。
摘要由CSDN通过智能技术生成

总实现: 

#include <iostream>
using namespace std;
long long CC(int a, int b)//求组合函数,a为C的下标,b为C上标,即:C=a!/(b!*(a-b)!)
{
	int res = 1;		//记录结果
	for (int i = a, j = 1; j <= b; i--, j++)
	{
		res *= i / j;
	}
	return res;
}
long long AA(int a, int b)//求排列函数,a为A的下标,b为A的上标,即:A=a!/b!
{
	int res = 1;		//记录结果
	int num = a;		//用于阶乘
	for (int i = 0; i < a - b; i++)		//要循环的次数为a-b次。
	{
		res *= num;		
		num--;
	}
	return  res;
}
int main()
{
	int k = CC(5, 3);
	cout << k << endl;
	int kk = AA(5, 3);
	cout << kk << endl;
	return 0;
}

关于组合函数:

long long CC(int a, int b)//求组合函数,a为C的下标,b为C上标,即:C=a!/(b!*(a-b)!)
{
	int res = 1;		//记录结果
	for (int i = a, j = 1; j <= b; i--, j++)
	{
		res *= i / j;
	}
	return res;
}

比如C_{5}^{3}=\displaystyle \frac{5*4*3*2*1}{3*2*1*2*1}=\frac{5*4*3}{3*2*1}    C_{5}^{2}=\displaystyle \frac{5*4*3*2*1}{2*1*3*2*1}=\frac{5*4}{2*1}

可知,由于约分,分母与分子的因子的个数都相等,且都为(比如C_{a}^{b})a-b个因子,所以可以由该函数,让分母从1开始且增大到b来实现组合(C^{_{5}^{3}}=\frac{5}{1}*\frac{4}{2}*\frac{3}{3})。

关于排列函数:

long long AA(int a, int b)//求排列函数,a为A的下标,b为A的上标,即:A=a!/b!
{
	int res = 1;		//记录结果
	int num = a;		//用于阶乘
	for (int i = 0; i < a - b; i++)		//要循环的次数为a-b次。
	{
		res *= num;		
		num--;
	}
	return  res;
}

比如A_{5}^{2}=\frac{5*4*3*2*1}{2*1}=5*4*3,可知要实现排列函数,用阶乘就行,阶乘循环的次数就是(比如A_{a}^{b})a-b次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值