Número Motzkin

En matemáticas, un número de Motzkin para un número dado n es el número de formas diferentes de dibujar cuerdas que no se cortan entre n puntos en un círculo (no necesariamente tocando cada punto por una cuerda). 
Por ejemplo, para n = 3, M 4 = 9.

La relación de recurrencia con el número N de Motzkin es: 

El número de Motzkin se puede utilizar para encontrar:  

  • El número de secuencias enteras positivas de longitud n – 1 en las que los elementos de apertura y finalización son 1 o 2, y la diferencia entre dos elementos consecutivos es -1, 0 o 1.
  • El número de rutas en el cuadrante superior derecho de una cuadrícula desde la coordenada (0, 0) hasta la coordenada (n, 0) en n pasos si uno puede moverse solo hacia la derecha (hacia arriba, hacia abajo o en línea recta) en cada paso pero prohibido sumergirse por debajo del eje y = 0.

Por ejemplo-

La siguiente figura muestra los 9 caminos Motzkin válidos desde (0, 0) hasta (4, 0).

Ejemplos:

Input : n = 4
Output : 9

Input : n = 5
Output : 21

A continuación se muestra el programa para encontrar el enésimo número de Motzkin:

C++

// CPP Program to find Nth Motzkin Number.
#include <bits/stdc++.h>
using namespace std;
   
// Return the nth Motzkin Number.
int motzkin(int n)
{
    // Base Case
    if (n == 0 || n == 1)
        return 1;
   
    // Recursive step
    return ((2 * n + 1) * motzkin(n - 1) +
            (3 * n - 3) * motzkin(n - 2)) / (n + 2);
}
   
// Driven Program
int main()
{
    int n = 8;
    cout << motzkin(n) << endl;
    return 0;
}

Java

// Java Program to find Nth Motzkin Number.
import java.util.*;
   
class Digits
{
    // Return the nth Motzkin Number.
    public static int motzkin(int n)
    {
        // Base Case
        if (n == 0 || n == 1)
            return 1;
   
        // Recursive step
        return ((2 * n + 1) * motzkin(n - 1) +
                (3 * n - 3) * motzkin(n - 2)) / (n + 2);
    }
       
    // driver code   
    public static void main(String[] args)
    {
        int n = 8;
        System.out.print( motzkin(n) );
    }
}
   
// This code is contributed by rishabh_jain

Python3

# Python3 program to find Nth Motzkin Number.
   
# Return the nth Motzkin Number.
def motzkin(n) :
       
    # Base Case
    if (n == 0 or n == 1) :
        return 1
   
    # Recursive step
    return ((2 * n + 1) * motzkin(n - 1) +
            (3 * n - 3) * motzkin(n - 2)) / (n + 2)
   
# Driver code
n = 8
print( motzkin(n) )
   
# This code is contributed by rishabh_jain

C#

// C# Program to find Nth Motzkin Number.
using System;
   
class GFG {
       
    // Return the nth Motzkin Number.
    public static int motzkin(int n)
    {
           
        // Base Case
        if (n == 0 || n == 1)
            return 1;
   
        // Recursive step
        return ((2 * n + 1) * motzkin(n - 1) +
            (3 * n - 3) * motzkin(n - 2)) / (n + 2);
    }
       
    // driver code
    public static void Main()
    {
        int n = 8;
           
        Console.WriteLine( motzkin(n) );
    }
}
   
// This code is contributed by vt_m

PHP

<?php
// PHP Program to find
// Nth Motzkin Number.
   
// Return the nth Motzkin Number.
function motzkin($n)
{
    // Base Case
    if ($n == 0 || $n == 1)
        return 1;
   
    // Recursive step
    return ((2 * $n + 1) *
             motzkin($n - 1) +
            (3 * $n - 3) *
             motzkin($n - 2)) /
            ($n + 2);
}
   
// Driven Code
$n = 8;
echo(motzkin($n));
   
// This code is contributed by Ajit.
?>

Javascript

<script>
 
// javascript Program to find Nth Motzkin Number.
 
       
    // Return the nth Motzkin Number.
    function motzkin( n)
    {
           
        // Base Case
        if (n == 0 || n == 1)
            return 1;
   
        // Recursive step
        return ((2 * n + 1) * motzkin(n - 1) +
            (3 * n - 3) * motzkin(n - 2)) / (n + 2);
    }
       
    // driver code
 
        var n = 8;
           
        document.write( motzkin(n) );
 
 
</script>

Producción :

323

Usando Programación Dinámica:

A continuación se muestra la solución de programación dinámica para encontrar el n-ésimo número de Motzkin:

C++

// CPP Program to find Nth Motzkin Number.
#include <bits/stdc++.h>
using namespace std;
   
// Return the nth Motzkin Number.
int motzkin(int n)
{
    int dp[n + 1];
   
    // Base case
    dp[0] = dp[1] = 1;
   
    // Finding i-th Motzkin number.
    for (int i = 2; i <= n; i++)
        dp[i] = ((2 * i + 1) * dp[i - 1] +
                  (3 * i - 3) * dp[i - 2]) / (i + 2);
   
    return dp[n];
}
// Driven Program
int main()
{
    int n = 8;
    cout << motzkin(n) << endl;
    return 0;
}

Java

// Java Program to find Nth Motzkin Number.
import java.util.*;
   
class Digits
{
    // Return the nth Motzkin Number.
    public static int motzkin(int n)
    {
        int[] dp = new int[n+1];
   
        // Base case
        dp[0] = dp[1] = 1;
   
        // Finding i-th Motzkin number.
        for (int i = 2; i <= n; i++)
            dp[i] = ((2 * i + 1) * dp[i - 1] +
                (3 * i - 3) * dp[i - 2]) / (i + 2);
   
        return dp[n];
    }
       
    // driver code   
    public static void main(String[] args)
    {
        int n = 8;
        System.out.print( motzkin(n) );
    }
}
   
// This code is contributed by rishabh_jain

Python3

# Python3 program to find Nth Motzkin Number.
   
# Return the nth Motzkin Number.
def motzkin(n) :
       
    dp = [None] * (n+1)
   
    # Base case
    dp[0] = dp[1] = 1;
   
    i = 2
    # Finding i-th Motzkin number.
    while i <= n :
        dp[i] = ((2 * i + 1) * dp[i - 1] +
                (3 * i - 3) * dp[i - 2]) / (i + 2);
        i = i + 1
    return dp[n];
   
# Driver code
n = 8
print( motzkin(n) )
   
# This code is contributed by rishabh_jain

C#

// C# Program to find Nth Motzkin Number.
using System;
   
class GFG {
       
    // Return the nth Motzkin Number.
    public static int motzkin(int n)
    {
        int[] dp = new int[n+1];
   
        // Base case
        dp[0] = dp[1] = 1;
   
        // Finding i-th Motzkin number.
        for (int i = 2; i <= n; i++)
            dp[i] = ((2 * i + 1) * dp[i - 1] +
             (3 * i - 3) * dp[i - 2]) / (i + 2);
   
        return dp[n];
    }
       
    // driver code
    public static void Main()
    {
        int n = 8;
           
        Console.WriteLine( motzkin(n) );
    }
}
   
// This code is contributed by vt_m

PHP

<?php
// PHP Program to find
// Nth Motzkin Number.
   
// Return the nth Motzkin Number.
function motzkin($n)
{
   
    // Base case
    $dp[0] = $dp[1] = 1;
   
    // Finding i-th Motzkin number.
    for ($i = 2; $i <= $n; $i++)
        $dp[$i] = ((2 * $i + 1) *
                    $dp[$i - 1] +
                   (3 * $i - 3) *
                   $dp[$i - 2]) /
                   ($i + 2);
   
    return $dp[$n];
}
// Driven Code
$n = 8;
echo(motzkin($n));
   
// This code is contributed by Ajit.
?>

Javascript

// JavaScript Program to find Nth Motzkin Number.
 
// Return the nth Motzkin Number.
function motzkin(n)
{
    let dp = new Array(n+1).fill(0);
   
    // Base case
    dp[0] = dp[1] = 1;
   
    // Finding i-th Motzkin number.
    for (let i = 2; i <= n; i++)
        dp[i] = ((2 * i + 1) * dp[i - 1] +
                  (3 * i - 3) * dp[i - 2]) / (i + 2);
   
    return dp[n];
}
 
 
// Driven Program
let n = 8;
console.log(motzkin(n));
 
// The code is contributed by Nidhi goel

Producción:

323

Publicación traducida automáticamente

Artículo escrito por anuj0503 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *