In mathematics, a Delannoy numberD describes the number of paths from the southwest corner (0, 0) of a rectangular grid to the northeast corner (m, n), using only single steps north, northeast, or east. For Example, D(3, 3) equals 63. Delannoy Number can be calculated by:
Delannoy number can be used to find:
Counts the number of global alignments of two sequences of lengths m and n.
Number of points in an m-dimensional integer lattice that are at most n steps from the origin.
In cellular automata, the number of cells in an m-dimensional von Neumann neighborhood of radius n.
Number of cells on a surface of an m-dimensional von Neumann neighborhood of radius n.
Examples :
Input : n = 3, m = 3 Output : 63 Input : n = 4, m = 5 Output : 681
Below is the implementation of finding Delannoy Number:
C++
// CPP Program of finding nth Delannoy Number.
#include <bits/stdc++.h>
usingnamespacestd;
// Return the nth Delannoy Number.
intDelannoy(intn, intm)
{
// Base case
if(m == 0 || n == 0)
return1;
// Recursive step.
returnDelannoy(m - 1, n) +
Delannoy(m - 1, n - 1) +
Delannoy(m, n - 1);
}
// Driven Program
intmain()
{
intn = 3, m = 4;
cout << Delannoy(n, m) << endl;
return0;
}
Java
// Java Program for finding nth Delannoy Number.
importjava.util.*;
importjava.lang.*;
publicclassGfG{
// Return the nth Delannoy Number.
publicstaticintDelannoy(intn, intm)
{
// Base case
if(m == 0|| n == 0)
return1;
// Recursive step.
returnDelannoy(m - 1, n) +
Delannoy(m - 1, n - 1) +
Delannoy(m, n - 1);
}
// driver function
publicstaticvoidmain(String args[]){
intn = 3, m = 4;
System.out.println(Delannoy(n, m));
}
}
/* This code is contributed by Sagar Shukla. */
Python3
# Python3 Program for finding
# nth Delannoy Number.
# Return the nth Delannoy Number.
defDelannoy(n, m):
# Base case
if(m ==0orn ==0) :
return1
# Recursive step.
returnDelannoy(m -1, n) +Delannoy(m -1, n -1) +Delannoy(m, n -1)
# Driven code
n =3
m =4;
print( Delannoy(n, m) )
# This code is contributed by "rishabh_jain".
C#
// C# Program for finding nth Delannoy Number.
usingSystem;
publicclassGfG {
// Return the nth Delannoy Number.
publicstaticintDelannoy(intn, intm)
{
// Base case
if(m == 0 || n == 0)
return1;
// Recursive step.
returndealnnoy(m - 1, n) +
dealnnoy(m - 1, n - 1) +
dealnnoy(m, n - 1);
}
// driver function
publicstaticvoidMain()
{
intn = 3, m = 4;
Console.WriteLine(dealnnoy(n, m));
}
}
/* This code is contributed by vt_m. */
Javascript
<script>
// javascript Program for finding nth Delannoy Number.
// Return the nth Delannoy Number.
functionDelannoy(n, m)
{
// Base case
if(m == 0 || n == 0)
return1;
// Recursive step.
returnDelannoy(m - 1, n) +
Delannoy(m - 1, n - 1) +
Delannoy(m, n - 1);
}
// Driver code
let n = 3, m = 4;
document.write(Delannoy(n, m));
// This code is contributed by susmitakundugoaldanga.
</script>
PHP
<?php
// PHP Program of finding nth
// Delannoy Number.
// Return the nth Delannoy Number.
functionDelannoy( $n, $m)
{
// Base case
if($m== 0 or$n== 0)
return1;
// Recursive step.
returnDelannoy($m- 1, $n) +
Delannoy($m- 1, $n- 1) +
Delannoy($m, $n- 1);
}
// Driver Code
$n= 3;
$m= 4;
echoDelannoy($n, $m);
// This code is contributed by anuj_67.
?>
Output
129
Below is the Dynamic Programming program to find nth Delannoy Number:
In previous approach the current value dp[i][j] is only depend upon the current and previous row values of DP. So to optimize the space complexity we use a single 1D array to store the computations.
Implementation steps:
Create a 1D vector dp of size n+1 and initialize it with 1.
Now iterate over subproblems by the help of nested loop and get the current value from previous computations.
Now Create a temporary variable prev used to store the previous computations and temp to update prev after every iteration.
After every iteration assign the value of temp to prev for further iteration.
At last return and print the final answer stored in dp[n].
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!