코린이의 소소한 공부노트

Binomial Coefficient (iterative) 본문

Back-End/Algorithm

Binomial Coefficient (iterative)

무지맘 2023. 3. 7. 00:54

1. Problem

- nCk를 계산해보자.

 

2. Input

1) 음이 아닌 정수 n

2) 음이 아닌 정수 k

- 이때 k <= n

 

3. Output

1) nCk의 값

- C는 수학에서 조합을 나타내는 기호로, nCkn!/(k!(n-k)!)으로 계산된다.

 

4. PseudoCode

int bin2(int n, int k){
    index i, j;
    int B[0..n][0..k]
    for(i=0 ; i<=n ; i++){
        for(j=0 ; j<=minimum(i,k) ; j++){
            if(j==0 || j==i)
                B[i][j] = 1;
            else
                B[i][j] = B[i-1][j-1] + B[i-1][j];
        }
    }
    return B[n][k];
}

 

5. Example

class AlgoTest {
    public static void main(String[] args){
        System.out.println(bin2(5,3)); // 10
    }
    
    static long bin2(int n, int k) {
        int[][] B = new int[n+1][k+1];
        for(int i=0 ; i<=n ; i++) {
            for(int j=0 ; j<=Math.min(i, k) ; j++) {
                if(j==0 || j==i)
                    B[i][j] = 1;
                else
                    B[i][j] = B[i-1][j-1] + B[i-1][j];
            }
        }
        return B[n][k];
    }
}

 

'Back-End > Algorithm' 카테고리의 다른 글

Search Binary Tree (no example)  (0) 2023.03.08
Floyd's Algorithm for shortest paths  (0) 2023.03.07
Binomial Coefficient (recursive)  (0) 2023.03.07
Dynamic Programming  (0) 2023.03.07
Strassen's Matrix Multiplication Algorithm (no example)  (0) 2023.03.03