diff --git a/Arrays/catalan_number.cpp b/Arrays/catalan_number.cpp new file mode 100644 index 0000000..e3ef670 --- /dev/null +++ b/Arrays/catalan_number.cpp @@ -0,0 +1,37 @@ +// C++ program to find the nth Catalan Number +#include +using namespace std; + +// Returns value of Binomial Coefficient C(n, k) +unsigned long int binomialCoeff(unsigned int n, + unsigned int k) +{ + unsigned long int res = 1; + + if (k > n - k) + k = n - k; + + for (int i = 0; i < k; ++i) { + res *= (n - i); + res /= (i + 1); + } + + return res; +} + +// A Binomial coefficient based function to find nth catalan +// number in O(n) time +unsigned long int catalan(unsigned int n) +{ + unsigned long int c = binomialCoeff(2 * n, n); + + return c / (n + 1); +} + +// Driver code +int main() +{ + for (int i = 0; i < 10; i++) + cout << catalan(i) << " "; + return 0; +}