公式
異なるn個のものから異なるr個のものを選ぶ組み合わせの数は
今回は式(2)を実装。階乗 (factoral) で実装したfactorial関数を利用する。
C言語での実装
#include <stdio.h>
/* ---------------------------------------------
階乗を計算する
引数1: n 整数
戻り値 階乗
---------------------------------------------*/
int factorial(int n)
{
int fact = n;
if (n <= 0) return 1;
while (--n)
fact *= n;
return fact;
}
/* ---------------------------------------------
組み合わせの総数を計算する
引数1: n nCrのn
引数2: r nCrのr
戻り値 組み合わせの総数
---------------------------------------------*/
int combination(int n, int r)
{
if (r <= 0) return 1;
return factorial(n) / (factorial(r) * factorial(n - r));
}
/* main */
int main(void)
{
int n = 5;
int r = 3;
int c;
c = combination(n, r);
printf("%dC%d = %d\n", n, r, c);
return 0;
}
実行例5C3 = 10
0 件のコメント:
コメントを投稿