Wednesday, June 13, 2012

Binomial Coefficients - Part 3

This post exploits the recurrence :
C(n,k) = C(n-1, k) + C(n-1, k-1)

If the limits to n are known, then the above recurrence can be used for dynamic programming.

Implementation:
#define C_MAX 250
int C[C_MAX][C_MAX];
C[0][0] = 1;
for (int i = 1; i < C_MAX; i++){
C[i][0] = 1;
for (int j = 1; j <= i; j++){
/* Actual Binomial Coefficient */
//C[i][j] = C[i-1][j] + C[i-1][j-1];
/* Binomial Coefficient modulo MAX */
C[i][j] = (C[i-1][j] + C[i-1][j-1]) % MAX;
}
}

3 comments:

  1. may be you should un-comment the commented part.For C_MAX with value 250, It exceeds the bounds of an integer.

    ReplyDelete
  2. you could also have used http://en.wikipedia.org/wiki/Lucas'_theorem for this problem

    ReplyDelete