组合数编程
1. 编写程序 计算组合数的公式
var s,i,j,n:integer;
begin
readln(n);
s:=0;
for i:=1 to n do read(a[i]);
for j:=1 to n do s:=s+a[j];
writeln(n);
end.
#include <stdio.h>
void main()
{
void choose(int a,int b);
int a,b,c,d;
printf("请输入两个整数,以0,0结束\n");
scanf("%d,%d",&a,&b);
scanf("%d,%d",&c,&d);
if(c==0&&d==0)
choose(a,b);
}
void choose(int a,int b)
{
if(b>a)
{
printf("error!");
}
else
{
int fenmu=b,fenzi=a;
for(int i=a-1;i>a-b;i--)
fenzi*=i;
for(int j=b-1;j>1;j--)
fenmu*=j;
int temp;
temp=fenzi/fenmu;
printf("%d",temp);
}
}
3. 组合数编程
可以将结果加一个小数,如0.0000001,然后再处理就没问题了。
4. c语言编程,组合数
#include<iostream>
using namespace std;double jiecheng(int n)
{
if(n==0)
return 0;
if(n==1)
return 1;
double m=n;
while(!(n<2))
{
m=m*(n-1);
n--;
}
return m;
}main()
{
int n,r;
double zuheshu;
printf("请输入n和r(n>1且r<=n):\n");
scanf("%d%d",&n,&r);
printf("组合数=%f",zuheshu=(jiecheng(n)/(jiecheng(r)*jiecheng(n-r))));
} 这是在VC++环境中编的,如果在tuboC中运行,只需将头文件更改下就可以了
5. 计算组合数 如何编程
如果是指从m个不同元素中取出n(n≤m)个元素的所有组合的个数 的话
#include"stdio.h"
int fac(int n) /*阶乘函数*/
{
int s,i;
s=1;
for(i=1;i<=n;i++)
{
s*=i;
}
return(s);
}
main()
{
int n,m,c;
scanf("%d %d",&m,&n);
c=fac(m)/(fac(n)*fac(m-n));
printf("%d\n",c);
}
用的是C语言
6. C语言编程实现求组合数P=C(n,k)的值
double lnchoose(int n, int m)
{
if (m > n)
{
return 0;
}
if (m < n/2.0)
{
m = n-m;
}
double s1 = 0;
for (int i=m+1; i<=n; i++)
{
s1 += log((double)i);
}
double s2 = 0;
int ub = n-m;
for (int i=2; i<=ub; i++)
{
s2 += log((double)i);
}
return s1-s2;
}
double choose(int n, int m)
{
if (m > n)
{
return 0;
}
return exp(lnchoose(n, m));
}
用之前调用math.h头文件,用的话直接把值赋给choose()这个函数即可,直接调用上面的函数,返回一个double数值,可追问
