求助!各位编程界的精英!
小虾米初入江湖,请高手指教!我现在碰到一个问题不知怎么解决:
有1——19这几个数字,三个数字为一组问可以分几组?
我是想破了脑袋也没想出来,这要一种算法!请大哥大姐大叔大婶们多多指教!!
小虾米在这儿先谢谢您了!!
#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这几个数字,三个数字为一组问可以分几组, 我理解的是在组内不进行排列,仅供参考!