| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 394 人关注过本帖
标题:求助!各位编程界的精英!
收藏  订阅  推荐  打印 
leouson
Rank: 1
等级:新手上路
帖子:4
积分:140
注册:2006-12-17
求助!各位编程界的精英!

小虾米初入江湖,请高手指教!
我现在碰到一个问题不知怎么解决:
有1——19这几个数字,三个数字为一组问可以分几组?

我是想破了脑袋也没想出来,这要一种算法!请大哥大姐大叔大婶们多多指教!!
小虾米在这儿先谢谢您了!!
搜索更多相关主题的帖子: 精英  
2006-12-17 12:11
卧龙孔明
Rank: 12Rank: 12Rank: 12
等级:版主
威望:53
帖子:3732
积分:39392
注册:2006-10-13

排列组合问题,看高中课本

为了中国软件工业的未来,有爱心的朋友请不要帮忙代做作业,或者至少是收费服务!如果您不需要钱,或者您不愿收费用于自己,请把收取的钱用于支援山区贫困学生…谢谢大家!
2006-12-17 20:01
leouson
Rank: 1
等级:新手上路
帖子:4
积分:140
注册:2006-12-17

实在是太惭愧了,我是上完中专来学C的,对高中的知识好多都不知道!
那位大哥帮帮我!告诉我算法!小虾米感激不尽!
这道题还有一个要求:组成一组的三个数不能是连续的,辟如(1,2,3)。
2006-12-19 09:52
nuciewth
Rank: 12Rank: 12Rank: 12
来自:我爱龙龙
等级:版主
威望:99
帖子:9589
积分:95706
注册:2006-5-23

1——19这几个数字,三个数字为一组问可以分几组?
19个里选3个再做全排列--->第一组
16 ...
4...
1...
一共7组再做全排列.

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

#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
积分:140
注册:2006-12-17

非常感谢大哥的帮忙!小虾米感激不尽!
2006-12-30 09:52
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.055978 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved