# Entringer Number

The Entringer Number E(n, k) are the number of permutations of {1, 2, …, n + 1}, starting with k + 1, which, after initially falling, alternatively fall then rise. The Entringer are given by:

For example, for n = 4 and k = 2, E(4, 2) is 4.
They are:
3 2 4 1 5
3 2 5 1 4
3 1 4 2 5
3 1 5 2 4

Examples :

Input : n = 4, k = 2
Output : 4

Input : n = 4, k = 3
Output : 5

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Below is program to find Entringer Number E(n, k). The program is based on above simple recursive formula.

## C++

 // CPP Program to find Entringer Number E(n, k) #include using namespace std;    // Return Entringer Number E(n, k) int zigzag(int n, int k) {     // Base Case     if (n == 0 && k == 0)         return 1;        // Base Case     if (k == 0)         return 0;        // Recursive step     return zigzag(n, k - 1) +            zigzag(n - 1, n - k); }    // Driven Program int main() {     int n = 4, k = 3;     cout << zigzag(n, k) << endl;     return 0; }

## Java

 // JAVA Code For Entringer Number import java.util.*;    class GFG {            // Return Entringer Number E(n, k)     static int zigzag(int n, int k)     {         // Base Case         if (n == 0 && k == 0)             return 1;                 // Base Case         if (k == 0)             return 0;                 // Recursive step         return zigzag(n, k - 1) +                zigzag(n - 1, n - k);     }            /* Driver program to test above function */     public static void main(String[] args)      {         int n = 4, k = 3;         System.out.println(zigzag(n, k));                } }    // This code is contributed by Arnav Kr. Mandal.

## Python3

 # Python Program to find Entringer Number E(n, k)    # Return Entringer Number E(n, k) def zigzag(n, k):        # Base Case     if (n == 0 and k == 0):         return 1        # Base Case     if (k == 0):         return 0        # Recursive step     return zigzag(n, k - 1) + zigzag(n - 1, n - k);    # Driven Program n = 4 k = 3 print(zigzag(n, k))    # This code is contributed by # Smitha Dinesh Semwal

## C#

 // C# Code For Entringer Number using System;    class GFG {        // Return Entringer Number E(n, k)     static int zigzag(int n, int k)     {         // Base Case         if (n == 0 && k == 0)             return 1;            // Base Case         if (k == 0)             return 0;            // Recursive step         return zigzag(n, k - 1) +                 zigzag(n - 1, n - k);     }        /* Driver program to test above function */     public static void Main()     {         int n = 4, k = 3;         Console.WriteLine(zigzag(n, k));     } }    // This code is contributed by vt_m.

## PHP



Output :

5

Below is the implementation of finding Entringer Number using Dynamic Programming:

## C++

 // CPP Program to find Entringer Number E(n, k) #include using namespace std;    // Return Entringer Number E(n, k) int zigzag(int n, int k) {     int dp[n + 1][k + 1];     memset(dp, 0, sizeof(dp));        // Base cases     dp[0][0] = 1;     for (int i = 1; i <= n; i++)          dp[i][0] = 0;            // Finding dp[i][j]     for (int i = 1; i <= n; i++) {         for (int j = 1; j <= i; j++)              dp[i][j] = dp[i][j - 1] +                         dp[i - 1][i - j];        return dp[n][k]; }    // Driven Program int main() {     int n = 4, k = 3;     cout << zigzag(n, k) << endl;     return 0; }

## Java

 // JAVA Code For Entringer Number import java.util.*;    class GFG {            // Return Entringer Number E(n, k)     static int zigzag(int n, int k)     {         int dp[][] = new int[n + 1][k + 1];                   // Base cases         dp[0][0] = 1;         for (int i = 1; i <= n; i++)              dp[i][0] = 0;                     // Finding dp[i][j]         for (int i = 1; i <= n; i++) {             for (int j = 1; j <= Math.min(i, k);                                           j++)                  dp[i][j] = dp[i][j - 1] +                             dp[i - 1][i - j];             }                 return dp[n][k];     }            /* Driver program to test above function */     public static void main(String[] args)      {         int n = 4, k = 3;         System.out.println(zigzag(n, k));     } }        // This code is contributed by Arnav Kr. Mandal.

## Python3

 # Python3 Program to find Entringer # Number E(n, k)    # Return Entringer Number E(n, k) def zigzag(n, k):     dp = [[0 for x in range(k+1)]               for y in range(n+1)]         # Base cases     dp[0][0] = 1     for i in range(1, n+1):         dp[i][0] = 0        # Finding dp[i][j]     for i in range(1, n+1):         for j in range(1, k+1):             dp[i][j] = (dp[i][j - 1]                   + dp[i - 1][i - j])                                return dp[n][k]    # Driven Program n = 4 k = 3 print(zigzag(n, k))    # This code is contributed by  # Prasad Kshirsagar

## C#

 // C# Code For Entringer Number using System;    class GFG {        // Return Entringer Number E(n, k)     static int zigzag(int n, int k)     {         int[, ] dp = new int[n + 1, k + 1];            // Base cases         dp[0, 0] = 1;         for (int i = 1; i <= n; i++)             dp[i, 0] = 0;            // Finding dp[i][j]         for (int i = 1; i <= n; i++) {             for (int j = 1; j <= Math.Min(i, k);                 j++)                 dp[i, j] = dp[i, j - 1] + dp[i - 1, i - j];         }            return dp[n, k];     }        /* Driver program to test above function */     public static void Main()     {         int n = 4, k = 3;         Console.WriteLine(zigzag(n, k));     } }    // This code is contributed by vt_m.

## PHP



Output :

5

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.