From 5650a04893d9a3fc7c4beda6f743cf2c16835614 Mon Sep 17 00:00:00 2001 From: fulcrum999 <114816542+fulcrum999@users.noreply.github.com> Date: Sat, 1 Oct 2022 19:42:29 +0530 Subject: [PATCH] catalan_number.cpp C++ program to find the nth Catalan Number --- Arrays/catalan_number.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Arrays/catalan_number.cpp 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; +}