c語言求組合
⑴ c語言,計算組合數C(A,B)
#include <stdio.h>
double fact(int n);
int main()
{
int i,j,m,n;
double C;
printf("Enter in:
");
scanf("%d %d",&m,&n);
C = fact(n)/(fact(m)*fact(n-m));
printf("The result of C(m,n) is %.1f:
",C);
return 0;
}
double fact(int n)
{
int i;
double termainate;
termainate=1;
for(i=1;i<=n;i++)
{
termainate *= i;
}
return termainate;
}
⑵ c語言編程排列組合
void Show(int n,int len ,char str[], char p[],int *i){/*函數功能說明:
密碼窮舉法 遞歸演算法參數說明:len 密碼可選元素的個數,實際等於 strlen(str);
n 密碼位數。
STR[]密碼表。
*p 密碼排列組合的臨時存檔*/int a;n--;for(a=0; a < len; a++){p[n]=str[a];
if(n==0)printf("%d:%s ",(*i)++,p);
if(n0)Show(n,len , str,p,i);}}
/*驅動程序 用於測試*/
int main(void){char str[]="abcdef";//密碼表 可選元素集合可根據選擇修改
int n=4;//密碼位數,根據具體應用而定。
int len=strlen(str);//用於密碼元素集合計數。
char p[20];//存放排列組合的密碼,用於輸出。
int num=0;//存放統計個數的整數值,
int *i=#//計數器 地址。
p[n]='\0';//這個不用說啦。
printf("\n%d 位密碼,每個密碼有%d個選擇的話,共有:%d個組合。\n",n,len,*i);return 0;}
以上回答你滿意么?
⑶ C語言如何實現任意數排列組合,新手求助,急
求排列組合沒有簡單方法。方法只有一個,枚舉。
有幾個位置需要列舉,就需要幾個循環。如果循環數量太多,可以用函數遞歸來枚舉。
常式:
#include<stdio.h>
intmain(){
inta[4]={1,3,4,7};//第一個位置
intb[4]={2,5,8,10};//第二個位置
intc[4]={6,9,11,12};//第三個位置
inti,j,k;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
for(k=0;k<4;k++)
printf("%d%d%d ,",a[i],b[j],c[k]);//輸出一種排列
getch();
return0;
}
⑷ c語言從n個數中選m個數的組合
#include<stdio.h>
unsignedlongfactorial(intn);
unsignedlongcombination(intn,intm);
intmain(){
intn,m;
scanf("%d%d",&n,&m);
printf("combination(%d,%d)=%u
",n,m,combination(n,m));
return0;
}
unsignedlongcombination(intn,intm){
unsignedlongres=1;
res=factorial(n)/((factorial(n-m)*factorial(m)));
returnres;
}
unsignedlongfactorial(intn){
inti;
unsignedlongf=1;
for(i=1;i<=n;i++)
f*=i;
returnf;
}