『新・明解C言語 入門編 第2版』演習問題解答例 8ー7

演習8ー7

問: 異なるn個の整数からr個の整数を取り出す組合せの数nCrを求める関数を作成せよ。

 int combination(int n, int x)

 なお、nCrは次のように定義される。

 nCr = n – 1 C r -1 + n – 1 C r(ただし、nC0 = nCn = 1, nC1 = n)  

// Ex0807.c

#include <stdio.h>

int combination(int n, int r)
{
    if (r == 0 || n == r)
        return 1;
    else if (r == 1)
        return n;
    else
        return combination(n - 1, r - 1) + combination(n - 1, r);
}

int main(void)
{
    int x;
    int y;

    printf("整数は何個?:");
    scanf("%d", &x);
    printf("取り出す個数は?:");
    scanf("%d", &y);

    printf("整数 %d 個 から %d 個を取り出す組み合わせの数は %d です。\n", x, y, combination(x, y));

    return 0;
}

コメント

 問題文の内容が理解できなくて全く手がつけられず、先生の解説を頼った問題。数学的知識が要求されると厳しい。

 


書籍情報


コメント

タイトルとURLをコピーしました