EASY7

memorization / 조합 combination 본문

개발 공부/C

memorization / 조합 combination

E.asiest 2017. 10. 4. 17:43

 순환을 이용한 조합

m 배열에 값을 메모한다.

#include<stdio.h>
int comb(int n, int r, int *m);
int main()
{
    int c;
    int i;
    int n, r;
    int *m;
    printf("enter number n and r (nCr)\n");
    printf("n:");
    scanf("%d", &n);
    printf("r:");
    scanf("%d", &r);
 
    m = (int*)malloc(sizeof(int) * (r + 1));
    for (i = 0; i <= r; i++)
        m[i] = 0;
    c = comb(n, r, m);
    printf("%d", c);
 
    return 0;
}
int comb(int n, int r, int *m)
{
    if (r == n || r == 0)
        return 1;
    if (n - 1 == r)
    {
 
        if(m[r] == 0)
            m[r] = comb(n - 1, r - 1, m) + comb(n - 1, r, m);
        return m[r];
    }
   
    return comb(n - 1, r - 1, m) + comb(n - 1, r, m);
}
 
 

'개발 공부 > C' 카테고리의 다른 글

[c언어] 순환 / 큰 값으로 만들어주는 길 찾기  (0) 2017.10.04
memorization / 피보나치 수열  (0) 2017.10.04
[c언어] 미로 길 찾기  (0) 2017.10.04
[c언어] 디버깅 debuging  (0) 2017.09.28
[c언어] string.h 함수  (0) 2017.09.28
Comments