① c語言編程實現求組合數P=C(n,k)的值
#include <stdio.h>
void main(){
int n,k,sum=1;
printf("請輸入組合數P=C(n,k)中的n、k:");
scanf("%d %d",&n,&k);
for (int i=k+1;i<=n;i++)
sum*=i;
for (i=1;i<=n-k;i++)
{
sum/=i;
}
printf("C(%d,%d)=%d\n",n,k,sum);
}
② C語言【求組合數】
C語言的話,你要自己設計一個數據結構,用來保存超長整數。
然後自己編寫超長整數的四則運算函數。
跟據你要處理的組合數來設計這個結構大小,
比如要處理100的階乘,要10進制的157位數。
③ 請教C語言排列組合數演算法的思想
#include<stdio.h>
long sumSelect(int full,int few,int order){ //參數:full總數 few:需要選出數 order:=1是排列 =0是組合
long sum=1;
if(full<few) return -1;
for(int i=full;i>few;i--)
sum=sum*i;
if(order) for(int j=1;j<=few;j++) sum=sum*j;
return sum;
}
main()
{
printf("%d\n",sumSelect(3,3,0)); //3個數中選3個然後組合 1
printf("%d\n",sumSelect(3,3,1));//3個數中選3個然後排列 6
printf("%d\n",sumSelect(4,3,1));//4個數中選3個然後排列 24
}
④ C語言題目求解——組合數
#include <stdio.h>
int jiecheng(int n)
{
if(n == 1 || n==0)
return 1;
else
return n*jiecheng(n-1);
}
int main()
{
int n;
int i;
int t;
int count = 0;
while(1)
{
scanf("%d",&n);
if(n == -1)
break;
printf("2^%d=",n);
for(i = 0; i <= n; i++)
{
count ++;
t = jiecheng(n)/(jiecheng(n-i)*jiecheng(i));
if(count == 0)
printf("%d",t);
else
printf("+%d",t);
}
printf(" ");
}
return 0;
}
⑤ C語言求組合數
doublefact(longnum)
{
for(longi=1;num>0;num--)
{
i*=num;
}
}
intmain()
{
longm;
longn;
longC;
scanf("%ld%ld",&m,&n);
C=fact(n)/((fact(m))*fact(n-m));
printf("%ld",C);
return0;
}
⑥ c語言中組合數大數的計算
存儲空間是有限的
在4位元組的空間里能存儲的最大正整數是2的31次冪減1,最小的負整數是負的2的31次冪
⑦ 用C語言求組合數
實現的演算法很多, 下面給出一個不需要遞歸的演算法; 需要設計兩個函數。
unsigned long factorial (unsigned long n);
long long perm(unsigned long m, unsigned long n);
unsigned long factorial (unsigned long n)
{
unsigned long value = (n == 0) ? 1 : n;
while( n >= 2 )
value *= --n;
return value;
}
long long perm(unsigned long m, unsigned long n)
{
if (m > n)
return -1;
else
return (unsigned long) (factorial(n)/factorial(n-m));
}
只為了m>n就要返回-1, 有點浪費啊~~~
注意求值范圍, 如果需要可以int64擴展。。。
⑧ C語言 求組合數,,用遞歸方法
舉個例子 不太明白是什麼組合數
補充======
說白了就是求階乘
fun是階乘函數
直接調用即可
#include <stdio.h>
long sum=0;//組合數結果
long fun(int i) //階乘
{
If(n==1)
return 1 ; /*遞歸出口*/
else
return i*fun(i-1); /*遞歸體*/
}
long com(int n, int m)
{
sum=fun(m)/fun(n)*fun(m-n);
return sum;
}
int main(void)
{
int m=9,n=4;
printf("%l" , com(4,9));
return 0;
}
⑨ 排列組合C語言編程思路
有286*20*10*84種,你確定要輸出來嗎?!