Dyck path - GeeksforGeeks

07 Jul, 2021
Consider a n x n grid with indexes of top left corner as (0, 0). Dyck path is a staircase walk from bottom left, i.e., (n-1, 0) to top right, i.e., (0, n-1) that lies above the diagonal cells (or cells on line from bottom left to top right).The task is to count the number of Dyck Paths from (n-1, 0) to (0, n-1).Examples : 
Input : n = 1
Output : 1

Input : n = 2
Output : 2

Input : n = 3
Output : 5

Input : n = 4
Output : 14
 
The number of Dyck paths from (n-1, 0) to (0, n-1) can be given by the Catalan numberC(n). 
Below are the implementations to find count of Dyck Paths (or n’th Catalan number). 
C++
Java
Python3
C#
PHP
Javascript
// C++ program to count// number of Dyck Paths#include<iostream>using namespace std; // Returns count Dyck// paths in n x n gridint countDyckPaths(unsigned int n){    // Compute value of 2nCn    int res = 1;    for (int i = 0; i < n; ++i)    {        res *= (2 * n - i);        res /= (i + 1);    }     // return 2nCn/(n+1)    return res / (n+1);} // Driver Codeint main(){    int n = 4;    cout << "Number of Dyck Paths is "         << countDyckPaths(n);    return 0;}
// Java program to count// number of Dyck Pathsclass GFG{    // Returns count Dyck    // paths in n x n grid    public static int countDyckPaths(int n)    {        // Compute value of 2nCn        int res = 1;        for (int i = 0; i < n; ++i)        {            res *= (2 * n - i);            res /= (i + 1);        }         // return 2nCn/(n+1)        return res / (n + 1);    }     // Driver code    public static void main(String args[])    {        int n = 4;        System.out.println("Number of Dyck Paths is " +                                    countDyckPaths(n));    }}
# Python3 program to count# number of Dyck Paths # Returns count Dyck# paths in n x n griddef countDyckPaths(n):         # Compute value of 2nCn    res = 1    for i in range(0, n):        res *= (2 * n - i)        res /= (i + 1)     # return 2nCn/(n+1)    return res / (n+1) # Driver Coden = 4print("Number of Dyck Paths is ",    str(int(countDyckPaths(n)))) # This code is contributed by# Prasad Kshirsagar
// C# program to count// number of Dyck Pathsusing System; class GFG {         // Returns count Dyck    // paths in n x n grid    static int countDyckPaths(int n)    {                 // Compute value of 2nCn        int res = 1;        for (int i = 0; i < n; ++i)        {            res *= (2 * n - i);            res /= (i + 1);        }         // return 2nCn/(n+1)        return res / (n + 1);    }     // Driver code    public static void Main()    {        int n = 4;        Console.WriteLine("Number of "                  + "Dyck Paths is " +                   countDyckPaths(n));    }} // This code is contributed by anuj_67.
<?php// PHP program to count// number of Dyck Paths // Returns count Dyck// paths in n x n gridfunction countDyckPaths( $n){    // Compute value of 2nCn    $res = 1;    for ( $i = 0; $i < $n; ++$i)    {        $res *= (2 * $n - $i);        $res /= ($i + 1);    }     // return 2nCn/(n+1)    return $res / ($n + 1);} // Driver Code$n = 4;echo "Number of Dyck Paths is " ,              countDyckPaths($n); // This code is contributed by anuj_67.?>
<script> // JavaScript program to count// number of Dyck Paths     // Returns count Dyck    // paths in n x n grid    function countDyckPaths(n)    {             // Compute value of 2nCn        let res = 1;        for (let i = 0; i < n; ++i)        {            res *= (2 * n - i);            res /= (i + 1);        }           // return 2nCn/(n+1)        return res / (n + 1);    } // Driver Code         let n = 4;        document.write("Number of Dyck Paths is " +                                    countDyckPaths(n));         // This code is contributed by target_2.</script>
Output :  
Number of Dyck Paths is 14
Exercise :  
Find number of sequences of 1 and -1 such that every sequence follows below constraints : a) The length of a sequence is 2n b) There are equal number of 1’s and -1’s, i.e., n 1’s, n -1s c) Sum of prefix of every sequence is greater than or equal to 0. For example, 1, -1, 1, -1 and 1, 1, -1, -1 are valid, but -1, -1, 1, 1 is not valid.Number of paths of length m + n from (m-1, 0) to (0, n-1) that are restricted to east and north steps.
Find number of sequences of 1 and -1 such that every sequence follows below constraints : a) The length of a sequence is 2n b) There are equal number of 1’s and -1’s, i.e., n 1’s, n -1s c) Sum of prefix of every sequence is greater than or equal to 0. For example, 1, -1, 1, -1 and 1, 1, -1, -1 are valid, but -1, -1, 1, 1 is not valid.
Number of paths of length m + n from (m-1, 0) to (0, n-1) that are restricted to east and north steps.
 
This article is contributed by Aditya Chatterjee. If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
 
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
 
vt_m
Prasad_Kshirsagar
target_2
catalan
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Merge two sorted arrays
Modulo Operator (%) in C/C++ with Examples
Modulo 10^9+7 (1000000007)
Find all factors of a natural number | Set 1
Program to find sum of elements in a given array
The Knight's tour problem | Backtracking-1
Program for factorial of a number
Minimum number of jumps to reach end
Operators in C / C++
Efficient program to print all prime factors of a given number