Formas de pintar escaleras con dos colores de forma que dos contiguas no sean amarillas

Dadas n escaleras y tenemos 2 colores amarillo y verde, la tarea es que tenemos que pintar las escaleras dadas por el color dado con la condición de que no podemos pintar dos escalones amarillos uno detrás del otro.
Ejemplos: 
 

Input : n = 1
Output : 2
A single stair can be colored either
as green or yellow.

Input : n = 3
Output : 5

Caso 1: Cuando tengamos 1 escalera, podemos pintarla de amarillo o de verde. 
Caso 2: Cuando tenemos 2 escalones, podemos pintar el primer escalón de amarillo o verde, pero para el siguiente escalón solo podemos pintar de verde porque no podemos pintar dos escalones amarillos uno detrás del otro. Así que los casos totales son tres YG, GG, GY. 
Caso 3: Cuando tenemos 3 escaleras, podemos pintarlas de 5 maneras.
Si miramos más de cerca, podemos notar que sigue la serie de Fibonacci .
 

C++

// C++ Program to find the number of ways to paint stairs
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the number of ways
int ways(int n)
{
    int W[n + 1];
 
    // take base case for 1 and 2
    W[1] = 2;
    W[2] = 3;
 
    for (int i = 3; i <= n; i++)
        W[i] = W[i - 1] + W[i - 2];
     
    return W[n];
}
 
// Driven code
int main()
{
    int n = 3;
    printf("%d", ways(n));
    return 0;
}

Java

// java Program to find the number of
// ways to paint stairs
import java.io.*;
 
public class GFG {
     
    // Function to find the number of ways
    static int ways(int n)
    {
        int []W = new int[n+1];
     
        // take base case for 1 and 2
        W[1] = 2;
        W[2] = 3;
     
        for (int i = 3; i <= n; i++)
            W[i] = W[i - 1] + W[i - 2];
         
        return W[n];
    }
     
    // Driven code
    static public void main (String[] args)
    {
        int n = 3;
         
        System.out.println(ways(n));
    }
}
 
// This code is contributed by vt_m.

Python3

# Python3 code to find the number
# of ways to paint stairs
 
# Function to find the number of ways
def ways( n ):
    W = list()
     
    # take base case for 1 and 2
    W.append(0)
    W.append(2)
    W.append(3)
     
    i = 3
    while i <= n:
        W.append(W[i - 1] + W[i - 2])
        i = i + 1
         
    return W[n]
 
# Driver code
n = 3
print(ways(n))
 
# This code is contributed by "Sharad_Bhardwaj".

C#

// C# Program to find the number of
// ways to paint stairs
using System;
 
public class GFG {
     
    // Function to find the number of ways
    static int ways(int n)
    {
        int []W =new int[n+1];
     
        // take base case for 1 and 2
        W[1] = 2;
        W[2] = 3;
     
        for (int i = 3; i <= n; i++)
            W[i] = W[i - 1] + W[i - 2];
         
        return W[n];
    }
     
    // Driven code
    static public void Main ()
    {
        int n = 3;
     
        Console.WriteLine(ways(n));
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP Program to find the
// number of ways to paint stairs
 
// Function to find the
// number of ways
function ways($n)
{
 
    // take base case
    // for 1 and 2
    $W[1] = 2;
    $W[2] = 3;
 
    for ($i = 3; $i <= $n; $i++)
        $W[$i] = $W[$i - 1] +
                 $W[$i - 2];
     
    return $W[$n];
}
 
// Driven code
$n = 3;
echo ways($n);
 
// This code is contributed by ajit
?>

Javascript

<script>
 
// Javascript Program to find the number of
// ways to paint stairs
 
    // Function to find the number of ways
    function ways(n)
    {
        let W = [];
       
        // take base case for 1 and 2
        W[1] = 2;
        W[2] = 3;
       
        for (let i = 3; i <= n; i++)
            W[i] = W[i - 1] + W[i - 2];
           
        return W[n];
    }
 
// Driver code
 
        let n = 3;
           
        document.write(ways(n));
           
</script>

Producción : 
 

5

Complejidad del tiempo: O(n) 
Espacio adicional: O(n)
Podemos resolver este problema en el tiempo O(Log n) usando también la solución de exponenciación matricial para el número n-ésimo de Fibonacci
 

Publicación traducida automáticamente

Artículo escrito por DANISH_RAZA 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 *