问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言求组合数

发布网友 发布时间:2022-05-10 07:41

我来回答

2个回答

热心网友 时间:2023-11-22 13:50

实现的算法很多, 下面给出一个不需要递归的算法; 需要设计两个函数。
unsigned long factorial (unsigned long n);
long long perm(unsigned long m, unsigned long n);

unsigned long factorial (unsigned long n)
{
unsigned long value = (n == 0) ? 1 : n;
while( n >= 2 )
value *= --n;

return value;
}

long long perm(unsigned long m, unsigned long n)
{
if (m > n)
return -1;
else
return (unsigned long) (factorial(n)/factorial(n-m));
}

只为了m>n就要返回-1, 有点浪费啊~~~
注意求值范围, 如果需要可以int64扩展。。。追问unsigned long value = (n == 0) ? 1 : n;
这是什么意思,那个?还有1:n看得我云里雾里
还有--n是什么意思
(factorial(n)/factorial(n-m)这不是组合数啊,还要除一个factorial(m)吧

追答① (n == 0) ? 1 : n; 这个是3目运算, 就是如果条件真就是1;否则是n;
② --n就是 n-1然后把结果赋值给=左边。
③ 嗯, 上面的例子,的确计算的是排列permutation, 而非组合combination, 如果要算combination, 再除一个factorial(m)。
修改perm函数为comb

long long comb(unsigned long m, unsigned long n)
{
if (m > n)
return -1;
else
return (unsigned long) (factorial(n) / (factorial(n-m)*factorial(m)));
}

热心网友 时间:2023-11-22 13:51

楼下正解
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 计算组合数 c语言 急求一份酒店嫌疑报查管理制度 C语言求组合数 我手机充电时,充电的充电器发热怎么回事 有一种菜要多吃,钙是鸡蛋6倍,铁是核桃8倍,你知道是什么吗? 每天吃8个核桃补肾吗 8月的核桃 淘宝上的核桃8快10快一斤的 可以买呢 为啥这么便宜啊 核桃为什么8月份大规模结果? 每天吃核桃8个连续一周会补脑吗 核桃变色的8个过程是什么呢? 医保卡到期了怎么办理流程 天津市退休人员哪里领取新更换的社保卡? 监测人脸识别系统真的有效吗? 天津医保卡换代社保卡,流程是什么样的? 用四个意思表示层层递进的词语写一句话,快!十万火急! 请问天津市的医保卡更换成社保卡截止到什么时间?今年错过了单位统一换卡的时间,可否自己办理? 表示递进关系的词语造句 求助:几个表递进的词语 表示递进的成语 c语言组合数算法不用递归怎么做 速8酒店两个人开房要几个身份证 沈阳哪有手工或者机器织毛衣的地方? 求一个C语言排列组合的算法 齐齐哈尔哪儿有手工编织毛衣的地方? 在成都哪里可以买到手工编织的毛衣啊? C语言组合算法 手工打的毛衣在哪里有买 c语言用数组来求组合数 一个关于组合数的C语言问题(求代码)。 - 信息提示 武汉哪里有手工织毛衣的店铺 C语言编写一个嵌套函数计算组合数 石家庄哪有手工织毛衣的店? 百度健康的三方核酸检测结果靠谱吗? C语言/C++ 求排列组合的的算法 哈尔滨哪里需要手工织毛衣的人 纯手工毛衣 请问重庆市区内哪里有织毛衣的店铺,价格适中,手艺比较细致的!(机织) 一个C语言求组合数的程序