Encuentre si es posible hacer una string binaria que contenga un número dado de «0», «1», «01» y «10» como subsecuencias

Dados cuatro enteros l , m , x e y . La tarea es verificar si es posible crear una string binaria que consista en l 0 , m 1 , x «01» e y «10» como subsecuencias en ella.
Ejemplos: 
 

Entrada: l = 3, m = 2, x = 4, y = 2 
Salida: Sí  La
string posible es “00110”. Contiene 3 0, 2 1, 
4 subsecuencias “01” y 2 subsecuencias “10”.
Entrada: l = 3, m = 2, x = 4, y = 3 
Salida: No 
No existe tal string binaria. 
 

Enfoque: La string posible siempre tiene la forma 00…11…00… . Primero consiste en una cierta cantidad de ceros, luego todos los unos y luego la cantidad restante de ceros. 
Sea l1 el número de ceros antes de unos y l2 sea el número de ceros después de unos, entonces las ecuaciones son: 
 

  1. l1 + l2 = l (Número total de ceros).
  2. l1 * m = x (Número de subsecuencias “01”).
  3. m * l2 = y (Número de “10” subsecuencias).

De las tres ecuaciones anteriores, obtenemos x + y = l * m . Si esta ecuación falla para los valores dados, entonces la string no es posible; de ​​lo contrario, imprima .
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function that returns true if it is possible to
// make a binary string consisting of l 0's, m 1's,
// x "01" sub-sequences and y "10" sub-sequences
bool isPossible(int l, int m, int x, int y)
{
    if (l * m == x + y)
        return true;
 
    return false;
}
 
// Driver code
int main()
{
    int l = 3, m = 2, x = 4, y = 2;
 
    if (isPossible(l, m, x, y))
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}

Java

// Java implementation of the approach
class sol
{
     
// Function that returns true if it is possible to
// make a binary string consisting of l 0's, m 1's,
// x "01" sub-sequences and y "10" sub-sequences
static boolean isPossible(int l, int m, int x, int y)
{
    if (l * m == x + y)
        return true;
 
    return false;
}
 
// Driver code
public static void main(String args[])
{
    int l = 3, m = 2, x = 4, y = 2;
 
    if (isPossible(l, m, x, y))
        System.out.print("Yes");
    else
        System.out.print("No");
 
}
}
 
// This code is contributed by Arnab Kundu

Python3

# Python3 implementation of the approach
 
# Function that returns true if it is possible to
# make a binary string consisting of l 0's, m 1's,
# x "01" sub-sequences and y "10" sub-sequences
def isPossible(l, m, x, y) :
     
    if (l * m == x + y) :
        return True;
 
    return False;
 
# Driver code
if __name__ == "__main__" :
 
    l = 3; m = 2; x = 4; y = 2;
 
    if (isPossible(l, m, x, y)) :
        print("Yes");
    else :
        print("No");
         
# This code is contributed by AnkitRai01

C#

// C# implementation of the approach
using System;
 
class sol
{
     
// Function that returns true if it is possible to
// make a binary string consisting of l 0's, m 1's,
// x "01" sub-sequences and y "10" sub-sequences
static Boolean isPossible(int l, int m, int x, int y)
{
    if (l * m == x + y)
        return true;
 
    return false;
}
 
// Driver code
public static void Main(String []args)
{
    int l = 3, m = 2, x = 4, y = 2;
 
    if (isPossible(l, m, x, y))
        Console.WriteLine("Yes");
    else
        Console.WriteLine("No");
}
}
 
// This code is contributed by Arnab Kundu

Javascript

<script>
 
// Javascript implementation of the approach
 
// Function that returns true if it is possible to
// make a binary string consisting of l 0's, m 1's,
// x "01" sub-sequences and y "10" sub-sequences
function isPossible(l, m, x, y)
{
    if (l * m == x + y)
        return true;
 
    return false;
}
 
// Driver code
    let l = 3, m = 2, x = 4, y = 2;
 
    if (isPossible(l, m, x, y))
        document.write("Yes");
    else
        document.write("No");
 
</script>
Producción: 

Yes

 

Complejidad de tiempo : O(1)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

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