c语言排列组合算法

排列组合算法

第五组
1.ACM协会晚会
ACM协会的会员越来越多了,训练量也越来也大,为使会员们在高强度的训练下得到放松,会员之间更加亲近,协会想为会员们准备一个晚会,晚会节目由会员们表演。
消息一出,报名要表演节目的会员很多,多达N个,尤其是才华横溢的史老师,点名要上台唱毛不易的《消愁》,但是由于场地和时间有限,只能从这N个人中选M个,请你帮会长算一算,一共有多少种选择方法?
输入描述:
数据的第一行是一个正整数T,接下来有T组数据,每组数据占一行。

每组数据包含两个整数N(来报名的人数,1<=N<=30),M(节目需要的人数0<=M<=30)。
输出描述:
每组数据输出一个整数,每个输出占一行。
示例1
输入
5
3 2
5 3
4 4
3 6
8 0
输出
3
10
1
0
1

#include
#include
int main()
{
	int t;
	scanf("%d",&t);
	int n,m,i,j;
	long long c;
	for(j=0; j

贴上大佬的算法
其中最重要的一步就是n!/(n-m)!*m!的变形
C:指从几个中选取出来,不排列,只组合。

C(n,m)=n*(n-1)(n-m+1)/m!然后去计算比如说
第一次是n-m+1/11
c=1 i=1 时
第二次就是c=n-m+1
n-m+1+1/2如此循环

你可能感兴趣的:(c语言排列组合算法)