求n个元素的任意组合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求n个元素的任意组合相关的知识,希望对你有一定的参考价值。
比如A,B,C三个元素,可以做如下组合
A
B
C
AB
AC
BC
ABC
一共七个结果
4个元素有14中结果,这个用什么数列公式?
A
B
C
D
AB
AC
AD
BC
BD
CD
ABC
ABD
ACD
BCD
ABCD
用这个公式:2^n-1
2个元素有2²-1=3种结果;
3个元素有2³-1=7种结果;
4个元素有2⁴-1=15种结果;
...... 参考技术B 组合(combination)是一个数学名词。一般地,从n个不同的元素中,任取m(m≤n)个元素为一组,叫作从n个不同元素中取出m个元素的一个组合。我们把有关求组合的个数的问题叫作组合问题。
组合(combination),数学的重要概念之一。从n个不同元素中每次取出m个不同元素(0≤m≤n),不管其顺序合成一组,称为从n个元素中不重复地选取m个元素的一个组合。所有这样的组合的总数称为组合数。
如果从n个不同元素中一个元素也不取,则只有一种,就是不取的那一种方法,即组合数为1。
希望我能帮助你解疑释惑。
[PTA]实验2-4-7 求组合数
本题要求编写程序,根据公式算出从n个不同元素中取出m个元素(m≤n)的组合数。
建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),以空格分隔。
输出格式:
按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。
输入样例:
2 7
输出样例:
result = 21
- 提交结果:
- 源码:
#include<stdio.h>
double fact(int n);//求n!
int main(void)
{
int m, n;
int result;
scanf("%d%d", &m, &n);
if (m == n)
{
result = 1;
}
else
{
result = fact(n) / (fact(m) * fact(n - m));
}
printf("result = %d\\n", result);
return 0;
}
// 递归方法求得n的阶乘
double fact(int n)
{
if (n == 1)
{
return 1;
}
else
{
return n * fact(n - 1);
}
}
以上是关于求n个元素的任意组合的主要内容,如果未能解决你的问题,请参考以下文章
在n个任意不相同的数中,输出r个数的组合,并且n和r由键盘输入。
将三个球随机的放入4个盒子中去,求任意三个盒子中各有一个球的概率!
hdu5795 A Simple Nim 求nim求法,打表找sg值规律 给定n堆石子,每堆有若干石子,两个人轮流操作,每次操作可以选择任意一堆取走任意个石子(不可以为空) 或者选择一堆,把它分成