Gidhub BE Developer

조합 (Combination)

2018-04-15
goodGid

Problem URL : 다리 놓기



//[1]
int a,b,n,r;
    a = b =1;
    scanf("%d%d",&n,&r);
    
    for(int i=n-r+1; i<=n; i++){
        b = ( b * i ) / a++ ;
    }
    cout << b << endl;

// 4 2를 입력하면 b=6 출력 
// 10 3을 입력하면 b=120 출력 


//[2]
int d[31][31];
int C(int n, int r) {
    if(n==r || r==0) return 1;
    if(d[n][r]>=0) return d[n][r];
    return d[n][r]=C(n-1,r)+C(n-1,r-1);
}


Review

  • [2]재귀함수를 이용한 조합을 [1]은 단순식으로 해결 가능 !

Index