ABOUT ME

Today
Yesterday
Total
  • 조합의 수(memo)
    코딩/C언어 2019. 9. 19. 01:04
    반응형
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #include <stdio.h>
    int comb(int n, int r, int** memo)
    {
        if (r == 0 || r == n)
        {
            memo[n][r] = 1;
            return memo[n][r];
        }
        else
        {
            if (memo[n - 1][r - 1== 0)
                memo[n - 1][r - 1= comb(n - 1, r - 1, memo);
     
            if (memo[n - 1][r] == 0)
                memo[n - 1][r] = comb(n - 1, r, memo);
     
            memo[n][r] = memo[n - 1][r - 1+ memo[n - 1][r];
     
            return memo[n][r];
        }
    }
    int main(void)
    {
        int c, n, r, i, j;
        int **memo;
     
        scanf("%d %d"&n, &r);
     
        memo = (int**)malloc(sizeof(int** (n + 1));
        for (i = 0; i <= n; i++)
            memo[i] = (int*)malloc(sizeof(int* (r + 1));
     
        for (i = 0; i <= n; i++)
            for (j = 0; j < r + 1; j++)
                memo[i][j] = 0;
     
        c = comb(n, r, memo);
        printf("%d\n", c);
    }
    cs

     

    결과:

     

    반응형

    '코딩 > C언어' 카테고리의 다른 글

    행렬의 합(정적)  (0) 2019.09.19
    암호화(시저암호)  (0) 2019.09.17
    퀵정렬  (0) 2019.09.17
    병합정렬  (0) 2019.09.17
    삽입정렬  (0) 2019.09.17
Designed by Tistory.