【算法】组合数与排列数

1.计算公式:

在这里插入图片描述在这里插入图片描述
组合数c++算法

#include <iostream>
using namespace std;
int jc(int ,int );				//求f到e阶乘 
int c(int, int);				//求组合数 
int main() {
	int n, m;				//定义n,m 
	cin >> n >> m;
	cout << c(n, m);			//输出n,m的组合数 
	return 0;
}
int jc(int f,int e) {  //计算从f到e的阶乘
	int sum_t = 1;			 
	for (int i = e; i >= f; i--) {	//阶乘次数 
		sum_t = sum_t * i;		//阶乘 
	}
	return sum_t;			//返回阶乘的值
}
int c(int n, int m) {
	return jc(m+1,n) / jc(1,n - m);	//组合数公式,返回组合数的值
}

排列数A(N,M)c++算法

#include <iostream>
using namespace std;
int jc(int ,int );				//求阶乘 
int c(int, int);				//求组合数 
int a(int, int);				//求排列数 
int main() {
	int n, m;				//定义n,m 
	cin >> n >> m;
	cout << c(n, m)<<endl;			//输出n,m的组合数 
	cout << a(n, m);			//输出n,m的排列数 
	return 0;
}
int jc(int f,int e) {
	int sum_t = 1;			//t的阶乘 
	for (int i = e; i >= f; i--) {	//阶乘次数 
		sum_t = sum_t * i;		//阶乘 
	}
	return sum_t;			//返回阶乘的值
}
int c(int n, int m) {
	return jc(m+1,n) / jc(1,n - m);	//组合数公式,返回组合数的值
}

int a(int n, int m) {
	return jc(n-m+1, n);	//组合数公式,返回组合数的值
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值