Skip to content
Related Articles

Related Articles

Central binomial coefficient

Improve Article
Save Article
  • Last Updated : 28 Jun, 2021
Improve Article
Save Article

Given an integer N, the task is to find the N^{th}    Central binomial coefficient
The first few Central binomial coefficients for N = 0, 1, 2, 3… are 
 

1, 2, 6, 20, 70, 252, 924, 3432…..

Examples: 
 

Input: N = 3 
Output: 20 
Explanation: 
N^{th}    Central Binomial Coefficient = \binom{2N}{N}    \binom{2*3}{3}    \frac{6*5*4}{3*2*1}    = 20
Input: N = 2 
Output:
 

 

Approach: The central binomial coefficient is a binomial coefficient of the form \binom{2N}{N}    . The Binomial Coefficient \binom{2N}{N}    can be computed using this approach for a given value N using Dynamic Programming.
For Example: 
 

Central binomial coefficient of N = 3 is given by: 
\binom{2N}{N}    \binom{2*3}{3}    \frac{6*5*4}{3*2*1}    = 20 
 

Below is the implementation of the above approach:
 

C++




// C++ implementation to find the
// Nth Central Binomial Coefficient
 
#include<bits/stdc++.h>
using namespace std;
 
// Function to find the value of
// Nth Central Binomial Coefficient
int binomialCoeff(int n, int k)
{
    int C[n + 1][k + 1];
    int i, j;
 
    // Calculate value of Binomial
    // Coefficient in bottom up manner
    for (i = 0; i <= n; i++)
    {
        for (j = 0; j <= min(i, k); j++)
        {
            // Base Cases
            if (j == 0 || j == i)
                C[i][j] = 1;
 
            // Calculate value
            // using previously
            // stored values
            else
                C[i][j] = C[i - 1][j - 1] +
                        C[i - 1][j];
        }
    }
 
    return C[n][k];
}
 
// Driver Code
int main()
{
    int n = 3;
    int k = n;
    n = 2*n;
    cout << binomialCoeff(n, k);
}

Java




// Java implementation to find the
// Nth Central Binomial Coefficient
class GFG{
     
// Function to find the value of
// Nth Central Binomial Coefficient
static int binomialCoeff(int n, int k)
{
    int[][] C = new int[n + 1][k + 1];
    int i, j;
 
    // Calculate value of Binomial
    // Coefficient in bottom up manner
    for(i = 0; i <= n; i++)
    {
       for(j = 0; j <= Math.min(i, k); j++)
       {
            
          // Base Cases
          if (j == 0 || j == i)
              C[i][j] = 1;
           
          // Calculate value
          // using previously
          // stored values
          else
              C[i][j] = C[i - 1][j - 1] +
                        C[i - 1][j];
       }
    }
    return C[n][k];
}
 
// Driver Code
public static void main(String[] args)
{
    int n = 3;
    int k = n;
    n = 2 * n;
     
    System.out.println(binomialCoeff(n, k));
}
}
 
// This code is contributed by Ritik Bansal

Python3




# C# implementation to find the
# Nth Central Binomial Coefficient
 
# Function to find the value of
# Nth Central Binomial Coefficient
def binomialCoeff(n, k):
     
    C = [[0 for j in range(k + 1)]
            for i in range(n + 1)]
     
    i = 0
    j = 0
     
    # Calculate value of Binomial
    # Coefficient in bottom up manner
    for i in range(n + 1):
        for j in range(min(i, k) + 1):
             
            # Base Cases
            if j == 0 or j == i:
                C[i][j] = 1
                 
            # Calculate value
            # using previously
            # stored values
            else:
                C[i][j] = (C[i - 1][j - 1] +
                           C[i - 1][j])
     
    return C[n][k]
     
# Driver code
if __name__=='__main__':
     
    n = 3
    k = n
    n = 2 * n
     
    print(binomialCoeff(n, k))
         
# This code is contributed by rutvik_56

C#




// C# implementation to find the
// Nth Central Binomial Coefficient
using System;
class GFG{
     
// Function to find the value of
// Nth Central Binomial Coefficient
static int binomialCoeff(int n, int k)
{
    int [,]C = new int[n + 1, k + 1];
    int i, j;
 
    // Calculate value of Binomial
    // Coefficient in bottom up manner
    for(i = 0; i <= n; i++)
    {
       for(j = 0; j <= Math.Min(i, k); j++)
       {
            
          // Base Cases
          if (j == 0 || j == i)
              C[i, j] = 1;
               
          // Calculate value
          // using previously
          // stored values
          else
              C[i, j] = C[i - 1, j - 1] +
                        C[i - 1, j];
       }
    }
    return C[n, k];
}
 
// Driver Code
public static void Main()
{
    int n = 3;
    int k = n;
    n = 2 * n;
     
    Console.Write(binomialCoeff(n, k));
}
}
 
// This code is contributed by Code_Mech

Javascript




<script>
 
// Javascript implementation to find the
// Nth Central Binomial Coefficient
 
// Function to find the value of
// Nth Central Binomial Coefficient
function binomialCoeff(n, k)
{
    var C = Array.from(Array(n+1),()=> Array(k+1));
    var i, j;
 
    // Calculate value of Binomial
    // Coefficient in bottom up manner
    for (i = 0; i <= n; i++)
    {
        for (j = 0; j <= Math.min(i, k); j++)
        {
            // Base Cases
            if (j == 0 || j == i)
                C[i][j] = 1;
 
            // Calculate value
            // using previously
            // stored values
            else
                C[i][j] = C[i - 1][j - 1] +
                        C[i - 1][j];
        }
    }
 
    return C[n][k];
}
 
// Driver Code
var n = 3;
var k = n;
n = 2*n;
document.write( binomialCoeff(n, k));
 
 
</script>

Output: 

20

 

Time Complexity: O(N * K)
Auxiliary Space: O(N * K)


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!