FUNCTION
Catalan_Numbers_List
Computes the Catalan numbers, of order 0 to n.
Interface
#include <codecogs/maths/combinatorics/sequences/catalan_numbers_list.h>
using namespace Maths::Combinatorics::Sequences;
The formula for calculating the Catalan number of order n has several forms:
This function uses the following recurrence relation:
The Catalan number C(n) counts:
1) the number of binary trees with $n$ vertices;
2) the number of ordered trees with $n+1$ vertices;
3) the number of full binary trees with $2n+1$ vertices;
4) the number of well formed sequences of $2n$ parentheses;
5) the number of ways $2n$ ballots can be counted, in order, with n positive and n negative, so that the running sum is never negative;
6) the number of standard tableaus in a 2 by n rectangular <em> Ferrers </em> diagram;
7) the number of monotone functions $f : [n] \rightarrow [n]$ which satisfy $f(i) \leq i$, for all $i = \overline{1, n}$
8) the number of ways to triangulate a polygon with $n+2$ vertices.
Example 1
#include <codecogs/maths/combinatorics/sequences/catalan_numbers_list.h>
#include <iostream>
int main() {
std::vector<int> result = Maths::Combinatorics::Sequences::catalan_numbers_list(8);
std::cout << "Number of values: " << result.size() << std::endl;
for (int i = 0; i < result.size(); i++)
std::cout << result[i] << " ";
std::cout << std::endl;
return 0;
}Output:
Number of values: 9
1 1 2 5 14 42 132 429 1430References
SUBSET, a C++ library of combinatorial routines, http://www.csit.fsu.edu/~burkardt/cpp_src/subset/subset.html