300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > c语言排列组合算法

c语言排列组合算法

时间:2018-09-26 12:55:01

相关推荐

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<stdio.h>#include<math.h>int main(){int t;scanf("%d",&t);int n,m,i,j;long long c;for(j=0; j<t; j++){scanf("%d %d",&n,&m);for(i=1,c=1; i<=m; i++){c=c*(n+1-i)/i; } printf("%d\n",c);}return 0;}

贴上大佬的算法

其中最重要的一步就是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+1n-m+1+1/2如此循环

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。