三九宝宝网宝宝教育教学论文

如何用C语言快速求组合数

03月03日 编辑 39baobao.com

[如何用C语言读写文件]一个c语言读写文件程序: #include "stdio.h" #include <stdlib.h> main() { FILE *fp1;//定义文件流指针,用于打开读取的文件 FILE *fp2;//定义文件流指针,用于打开写操作的文件 ch...+阅读

/*

* 文件名:Combination.c

* 用途:组合算法

* 编程环境:WinXP SP2+CL 8.0

* 完成日期: 2006.2 Ver 0.01

* 作者: 88250

* 联系方式: E-mail: DL88250gmail.com QQ:845765

*/

#include

#include

#define MAX_NUM 26

int comb[MAX_NUM];

int c1,c2;

void combination(int m, int n)

{

int i, j;

for (i = m; i >= n; i--){

comb[n] = i; /* 选择当前的“头”元素 */

if (n > 1){

/* 进入下一次更小的组合问题 */

combination(i - 1, n - 1);

}else{

/* 满了需要的组合数,输出 */

for (j = comb[0]; j > 0; j--){

printf("%c", 65+c1-comb[j]);

}

printf("\n");

}

}

return;

}

int main(int argc, char *argv[])

{

if (argc<3) {

printf("%s 组合下标 组合上标\n",argv[0]);

return 0;

}

c1=atoi(argv[1]);

if (c1<1||26

printf("1<;=组合下标<=26\n");

return 0;

}

c2=atoi(argv[2]);

if (c2<1||c1

printf("1<;=组合上标<;=组合下标\n");

return 0;

}

comb[0]=c2;

combination(c1, c2); /* C(4, 2) */

return 0;

}

C语言C求排列组合的的算法

我这有一个,能用。 #include using namespace std; template void combine(Elem a[], int n, int m, int s, int t, Elem b[]) { if (t > n) return; if (s == m) { for (int i = 0; i < m; i++) cout << b[i] << "\t"; cout << endl; } else { combine(a, n, m, s, t+1, b); b[s] = a[t]; combine(a, n, m, s+1, t+1, b); } } int main() { int a[6] = {1,2,3,4,5,6}, b[6]; combine(a, 6, 4, 0, 0, b); return 0; }

C语言编程实现求组合数P Cn 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数值,可追问

以下为关联文档:

如何用C语言求10000的阶乘#include"stdio.h"#include"string.h"#includeint main(){ char n[10]; int a[20000]={0},b[20000]={0},c[20000]={0},temp; int i,j,k,len; printf("请输入阶乘数:"); scanf("%s",&n);/*...

如何用C语言编写一个求两个矩阵相乘的结果/* Matrix_main.cpp */ // #include #include #include #include /* #include */ void main(void) { int col, row, row_s; /* the column & row of the matrix */ int **pM...

C语言编写一个嵌套函数计算组合#include<stdio.h> int c(int n,int m){ int i,s=1; for(i=m;i>=m-n+1;i--)s*=i; for(i=n;i>=2;i--)s/=i; return s;} int f(int k,int m,int n){ int i,s=0; for(i=k;i<=k+...

如何用C语言输出文件1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fsc...

如何用c语言将十进制数转换为二进制数//--------------------------------------------------------------------------- #include <stdio.h> long int btd(char *s) /*将以字符串形式存储在s地址中的二进制数字...

如何用c语言编写将十进制的数转换成二进制数的程序简单办法是用联合体,直接打印出来。 typedef union DANDB { unsigned long int i; // 存放十进制数 unsigned char c[4]; // 按字元(bit) 直接打印它出来 } DandB; int main() {...

如何用c语言求最大公约数和最小公倍数#include int main() { int p,r,n,m,temp; printf("请输入两个正整数n,m:"); scanf("%d%d,",&n,&m); if (n{ temp=n; n=m; m=temp; } p=n*m; while(m!=0) { r=n%m; n=m; m=r; } pr...

如何用c语言求最小公倍数和最大公约数我代码复制给你看。 #include<stdio.h> int GCD(int a,int b) //GCD表示最大公约数 { int z= a<b?a:b; //我从输入的两个数中较小的那个开始判断是不是最大公约数,不是就一直-...

C语言组合数函数纠错#include <stdio.h> #include <stdlib.h> int C(int,int); int main() { int x,y; scanf("%d,%d",&x,&y); printf("%d",C(x,y)); } int C(int n,int m) /*求n个取m个组合数*/ {...

推荐阅读
图文推荐