Dyck path

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

dyckpaths

Image Source : http://mathworld.wolfram.com/DyckPath.html

The number of Dyck paths from (n-1, 0) to (0, n-1) can be given by the Catalan numberC(n).

catalan4

We strongly recommend that you click here and practice it, before moving on to the solution.


Below are C++ and Java implementations to find count of Dyck Paths (or n’th Catalan number).

C++

// C++ program to count number of Dyck Paths
#include<iostream>
using namespace std;

// Returns count Dyck paths in n x n grid
int 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 program to test above functions
int main()
{
    int n = 4;
    cout << "Number of Dyck Paths is " << countDyckPaths(n);
    return 0;
}

Java

// Java program to count number of Dyck Paths
public class Test
{
    // 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 method to test above
    public static void main(String args[])
    {
        int n = 4;
        System.out.println("Number of Dyck Paths is " +
                           countDyckPaths(n));
    }
}


Output:

Number of Dyck Paths is 14

Exercise:

  1. 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.
  2. .

  3. 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 contribute@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

GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.

Recommended Posts:



3.16667 Average Difficulty : 3.16667/5.0
Based on 6 vote(s)










Writing code in comment? Please use ide.geeksforgeeks.org, generate link and share the link here.