#include<stdio.h>
int computeFac(int n);
int computeCom(int total,int len);
//计算组合的数目,数据的范围 start---tail ,len表示连续的数字数目
int compute(int start ,int tail, int len){
return computeCom((tail-start+1),len) - (tail - start +1 - len + 1);
}
//计算组合值
int computeCom(int total,int len){
int count = 1;
for(int i = len; i > 0; i--){
count = count*(total - i + 1);
}
return count/computeFac(len);
}
//计算阶乘
int computeFac(int n){
if(n == 1){
return n;
}else{
return n*computeFac(n-1);
}
}
void main(){
int i,j,k;
printf("input <start,tail,len> ,eg : <1,19,3> :\n");
scanf("%d,%d,%d",&i,&j,&k);
int count = compute(i,j,k);
printf("可能的组合有 %d 种\n",count);
}
有1——19这几个数字,三个数字为一组问可以分几组, 我理解的是在组内不进行排列,仅供参考!