Maximum binomial coefficient term value
Last Updated :
10 Aug, 2022
Given a positive integer n. The task is to find the maximum coefficient term in all binomial coefficient.
The binomial coefficient series is
nC0, nC1, nC2, …., nCr, …., nCn-2, nCn-1, nCn
the task is to find maximum value of nCr.
Examples:
Input : n = 4
Output : 6
4C0 = 1
4C1 = 4
4C2 = 6
4C3 = 1
4C4 = 1
So, maximum coefficient value is 6.
Input : n = 3
Output : 3
Method 1: (Brute Force)
The idea is to find all the value of binomial coefficient series and find the maximum value in the series.
Below is the implementation of this approach:
C++
#include<bits/stdc++.h>
using namespace std;
int maxcoefficientvalue( int n)
{
int C[n+1][n+1];
for ( int i = 0; i <= n; i++)
{
for ( int j = 0; j <= min(i, n); j++)
{
if (j == 0 || j == i)
C[i][j] = 1;
else
C[i][j] = C[i-1][j-1] + C[i-1][j];
}
}
int maxvalue = 0;
for ( int i = 0; i <= n; i++)
maxvalue = max(maxvalue, C[n][i]);
return maxvalue;
}
int main()
{
int n = 4;
cout << maxcoefficientvalue(n) << endl;
return 0;
}
|
Java
import java.io.*;
class GFG
{
static int maxcoefficientvalue( int n)
{
int [][]C = new int [n + 1 ][n + 1 ];
for ( int i = 0 ; i <= n; i++)
{
for ( int j = 0 ;
j <= Math.min(i, n); j++)
{
if (j == 0 || j == i)
C[i][j] = 1 ;
else
C[i][j] = C[i - 1 ][j - 1 ] +
C[i - 1 ][j];
}
}
int maxvalue = 0 ;
for ( int i = 0 ; i <= n; i++)
maxvalue = Math.max(maxvalue, C[n][i]);
return maxvalue;
}
public static void main (String[] args)
{
int n = 4 ;
System.out.println(maxcoefficientvalue(n));
}
}
|
Python3
def maxcoefficientvalue(n):
C = [[ 0 for x in range (n + 1 )]
for y in range (n + 1 )];
for i in range (n + 1 ):
for j in range ( min (i, n) + 1 ):
if (j = = 0 or j = = i):
C[i][j] = 1 ;
else :
C[i][j] = (C[i - 1 ][j - 1 ] +
C[i - 1 ][j]);
maxvalue = 0 ;
for i in range (n + 1 ):
maxvalue = max (maxvalue, C[n][i]);
return maxvalue;
n = 4 ;
print (maxcoefficientvalue(n));
|
C#
using System;
public class GFG {
static int maxcoefficientvalue( int n)
{
int [,]C = new int [n+1,n+1];
for ( int i = 0; i <= n; i++)
{
for ( int j = 0; j <= Math.Min(i, n); j++)
{
if (j == 0 || j == i)
C[i,j] = 1;
else
C[i,j] = C[i-1,j-1] + C[i-1,j];
}
}
int maxvalue = 0;
for ( int i = 0; i <= n; i++)
maxvalue = Math.Max(maxvalue, C[n,i]);
return maxvalue;
}
static public void Main ()
{
int n = 4;
Console.WriteLine(maxcoefficientvalue(n));
}
}
|
PHP
<?php
function maxcoefficientvalue( $n )
{
for ( $i = 0; $i <= $n ; $i ++)
{
for ( $j = 0; $j <= min( $i , $n ); $j ++)
{
if ( $j == 0 || $j == $i )
$C [ $i ][ $j ] = 1;
else
$C [ $i ][ $j ] = $C [ $i - 1][ $j - 1] +
$C [ $i - 1][ $j ];
}
}
$maxvalue = 0;
for ( $i = 0; $i <= $n ; $i ++)
$maxvalue = max( $maxvalue , $C [ $n ][ $i ]);
return $maxvalue ;
}
$n = 4;
echo maxcoefficientvalue( $n ), "\n" ;
?>
|
Javascript
<script>
function binomialCoeff(n, k)
{
let C = new Array(n+1);
for (let i = 0; i < C.length; i++) {
C[i] = new Array(2);
}
for (let i = 0; i <= n; i++)
{
for (let j = 0;
j <= Math.min(i, k); j++)
{
if (j == 0 || j == i)
C[i][j] = 1;
else
C[i][j] = C[i - 1][j - 1] +
C[i - 1][j];
}
}
return C[n][k];
}
function maxcoefficientvalue(n)
{
if (n % 2 == 0)
return binomialCoeff(n, n / 2);
else
return binomialCoeff(n, (n + 1) / 2);
}
let n = 4;
document.write(maxcoefficientvalue(n));
</script>
|
Output:
6
Method 2: (Using formula)
Proof,
Expansion of (x + y)n are:
nC0 xn y0, nC1 xn-1 y1, nC2 xn-2 y2, …., nCr xn-r yr, …., nCn-2 x2 yn-2, nCn-1 x1 yn-1, nCn x0 yn
So, putting x = 1 and y = 1, we get binomial coefficient,
nC0, nC1, nC2, …., nCr, …., nCn-2, nCn-1, nCn
Let term ti+1 contains the greatest value in (x + y)n. Therefore,
tr+1 >= tr
nCr xn-r yr >= nCr-1 xn-r+1 yr-1
Putting x = 1 and y = 1,
nCr >= nCr-1
nCr/nCr-1 >= 1
(using nCr/nCr-1 = (n-r+1)/r)
(n-r+1)/r >= 1
(n+1)/r – 1 >= 1
(n+1)/r >= 2
(n+1)/2 >= r
Therefore, r should be less than equal to (n+1)/2.
And r should be integer. So, we get maximum coefficient for r equals to:
(1) n/2, when n is even.
(2) (n+1)/2 or (n-1)/2, when n is odd.
C++
#include<bits/stdc++.h>
using namespace std;
int binomialCoeff( int n, int k)
{
int C[n+1][k+1];
for ( int i = 0; i <= n; i++)
{
for ( int j = 0; j <= min(i, k); j++)
{
if (j == 0 || j == i)
C[i][j] = 1;
else
C[i][j] = C[i-1][j-1] + C[i-1][j];
}
}
return C[n][k];
}
int maxcoefficientvalue( int n)
{
if (n%2 == 0)
return binomialCoeff(n, n/2);
else
return binomialCoeff(n, (n+1)/2);
}
int main()
{
int n = 4;
cout << maxcoefficientvalue(n) << endl;
return 0;
}
|
Java
import java.io.*;
class GFG
{
static int binomialCoeff( int n,
int k)
{
int [][]C = new int [n + 1 ][k + 1 ];
for ( int i = 0 ; i <= n; i++)
{
for ( int j = 0 ;
j <= Math.min(i, k); j++)
{
if (j == 0 || j == i)
C[i][j] = 1 ;
else
C[i][j] = C[i - 1 ][j - 1 ] +
C[i - 1 ][j];
}
}
return C[n][k];
}
static int maxcoefficientvalue( int n)
{
if (n % 2 == 0 )
return binomialCoeff(n, n / 2 );
else
return binomialCoeff(n, (n + 1 ) / 2 );
}
public static void main(String[] args)
{
int n = 4 ;
System.out.println(maxcoefficientvalue(n));
}
}
|
Python3
def binomialCoeff(n, k):
C = [[ 0 for x in range (k + 1 )] for y in range (n + 1 )]
for i in range (n + 1 ):
for j in range ( min (i,k) + 1 ):
if (j = = 0 or j = = i):
C[i][j] = 1 ;
else :
C[i][j] = C[i - 1 ][j - 1 ] + C[i - 1 ][j];
return C[n][k];
def maxcoefficientvalue(n):
if (n % 2 = = 0 ):
return binomialCoeff(n, int (n / 2 ));
else :
return binomialCoeff(n, int ((n + 1 ) / 2 ));
if __name__ = = '__main__' :
n = 4 ;
print (maxcoefficientvalue(n));
|
C#
using System;
public class GFG {
static int binomialCoeff( int n, int k)
{
int [,]C = new int [n+1,k+1];
for ( int i = 0; i <= n; i++)
{
for ( int j = 0;
j <= Math.Min(i, k); j++)
{
if (j == 0 || j == i)
C[i,j] = 1;
else
C[i,j] = C[i-1,j-1] +
C[i-1,j];
}
}
return C[n,k];
}
static int maxcoefficientvalue( int n)
{
if (n % 2 == 0)
return binomialCoeff(n, n/2);
else
return binomialCoeff(n, (n + 1) / 2);
}
static public void Main ()
{
int n = 4;
Console.WriteLine(maxcoefficientvalue(n));
}
}
|
PHP
<?php
function binomialCoeff( $n , $k )
{
$C [ $n + 1][ $k + 1] = array (0);
for ( $i = 0; $i <= $n ; $i ++)
{
for ( $j = 0;
$j <= min( $i , $k ); $j ++)
{
if ( $j == 0 || $j == $i )
$C [ $i ][ $j ] = 1;
else
$C [ $i ][ $j ] = $C [ $i - 1][ $j - 1] +
$C [ $i - 1][ $j ];
}
}
return $C [ $n ][ $k ];
}
function maxcoefficientvalue( $n )
{
if ( $n % 2 == 0)
return binomialCoeff( $n , $n / 2);
else
return binomialCoeff( $n ,
( $n + 1) / 2);
}
$n = 4;
echo maxcoefficientvalue( $n ), "\n" ;
?>
|
Javascript
<script>
function binomialCoeff(n, k)
{
let C = new Array(n + 1);
for (let i = 0; i <= n; i++)
{
C[i] = new Array(k + 1);
}
for (let i = 0; i <= n; i++)
{
for (let j = 0; j <= Math.min(i, k); j++)
{
if (j == 0 || j == i)
C[i][j] = 1;
else
C[i][j] = C[i - 1][j - 1] +
C[i - 1][j];
}
}
return C[n][k];
}
function maxcoefficientvalue(n)
{
if (n % 2 == 0)
return binomialCoeff(n, n / 2);
else
return binomialCoeff(n, (n + 1) / 2);
}
let n = 4;
document.write(maxcoefficientvalue(n));
</script>
|
Output:
6
Time complexity: O(n*n)
Auxiliary space: O(n*n)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...