Private Sub Command1_Click()
Dim A, B, C
A = 10
B = 3
C = f(A) / (f(B) f(A - B))
Print C
End Sub
Private Function f(n)
Dim I As Integer
f = 1
For I = 1 To n
f = f I
Next I
End Function
main()
{
int m;
int n;
int k;
scanf("%d%d",&m,&n);
if (m>n)
{
k=combinNum(m,n);
printf(""%d\n",k);
}
if (m==n)
{
k=combinNum(m,n);
printf(""%d\n",k);
}
if (m<n)
{
combinNum(m,n);
printf(""%d\n",k);
}
double combinNum(int m,int n)
{
double x;
int y;
y=m-n;
x=facto(m)/(facto(n)facto(y));
return x;
}
int facto(int x)
{
if (x==1)
return 1;
else
return (x facto(x-1));
}
}
这是第一题的程序,第二题是要你自己做的,自己运行测试。
第三题的话,把后面两个自定义函数放入一个文件比如ac。在主函数文件中加入#include ac即可。
如果n个物品用于组合,在一个组合中,第i个物品有0和1两个情况,0表示不在组合中,1表示在组合中。这个组合可以表示为n位二进制数。考虑到每个物品都可能取0和1,这就是一个连续的二进制数。你所说的next_combination函数是让一个组合对应的二进制数加一,直到n位二进制数全为1为止。
#include "stdioh"
int factorial(int t) //阶乘计算函数 ,返回t的阶乘
{
if(t==0||t==1) return 1;
return tfactorial(t-1);
}
int cmn(int n,int m)
{
return factorial(n)/(factorial(m)factorial(n-m)) ;//组合数计算公式
}
void YangHuiTriAngOut(int n)
{
int i,j;
printf("\n");
for(i=0;i<n;i++)//共有n行输出
{
for(j=0;j<=i;j++)//每行输出j个数据
{
printf("%d\t", cmn(i,j) );
}
printf("\n");
}
}
void main(void)
{
YangHuiTriAngOut(7);
}
1、组合:计算从给定数目的对象集合中提取若干对象的组合数。利用函数 COMBIN 可以确定一组对象所有可能的组合数。
语法:COMBIN(number,number_chosen)
Number 项目的数量。
Number_chosen 每一组合中项目的数量。
比如:从9个数字球中,随机抽3个球,共有多少种组合,在excel任一单元格输入“=COMBIN(9,3)”,回车。结果就会得到。84种
2、排列:返回从给定数目的对象集合中选取的若干对象的排列数。排列为有内部顺序的对象或事件的任意集合或子集。排列与组合不同,组合的内部顺序无意义。此函数可用于**抽奖的概率计算。
语法:PERMUT(number,number_chosen)
Number 表示对象个数的整数。
Number_chosen 表示每个排列中对象个数的整数。
比如:从9个同学,随机抽3个同学,排列为一列,共有多少个排列方式,在excel任一单元格输入“=PERMUT(9,3)”,回车。结果就会得到。504种
以上就是关于用VB.NET编写一个程序 :编一求阶乘的函数f(n),主调程序求组合数的程序,分别调用f(n),用来计算组合数的值全部的内容,包括:用VB.NET编写一个程序 :编一求阶乘的函数f(n),主调程序求组合数的程序,分别调用f(n),用来计算组合数的值、C语言编程、跪求一个C++的组合数函数next_combination等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)