标题:求助!各位编程界的精英!
只看楼主
leouson
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-12-17
 问题点数:0 回复次数:5 
求助!各位编程界的精英!
小虾米初入江湖,请高手指教!
我现在碰到一个问题不知怎么解决:
有1——19这几个数字,三个数字为一组问可以分几组?

我是想破了脑袋也没想出来,这要一种算法!请大哥大姐大叔大婶们多多指教!!
小虾米在这儿先谢谢您了!!
搜索更多相关主题的帖子: 精英 
2006-12-17 12:11
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
得分:0 
排列组合问题,看高中课本

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2006-12-17 20:01
leouson
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-12-17
得分:0 
实在是太惭愧了,我是上完中专来学C的,对高中的知识好多都不知道!
那位大哥帮帮我!告诉我算法!小虾米感激不尽!
这道题还有一个要求:组成一组的三个数不能是连续的,辟如(1,2,3)。
2006-12-19 09:52
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
1——19这几个数字,三个数字为一组问可以分几组?
19个里选3个再做全排列--->第一组
16 ...
4...
1...
一共7组再做全排列.

倚天照海花无数,流水高山心自知。
2006-12-20 21:11
pupilxd
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-12-18
得分:0 

#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这几个数字,三个数字为一组问可以分几组, 我理解的是在组内不进行排列,仅供参考!

2006-12-21 09:04
leouson
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-12-17
得分:0 
非常感谢大哥的帮忙!小虾米感激不尽!
2006-12-30 09:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-110064-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070584 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved