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:
- l1 + l2 = l (Número total de ceros).
- l1 * m = x (Número de subsecuencias “01”).
- 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 Sí .
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>
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