Números distintos obtenidos al generar todas las permutaciones de una string binaria

Dada una string binaria S , la tarea es imprimir todos los números decimales distintos que se pueden obtener generando todas las permutaciones de la string binaria .

Ejemplos:

Entrada: S = “110”
Salida: {3, 5, 6}
Explicación: 
Todas las permutaciones posibles son {“110”, “101”, “110”, “101”, “011”, “011”}.
Los números decimales equivalentes de estas strings binarias son {6, 5, 6, 5, 3, 3} respectivamente.
Por lo tanto, los distintos números decimales obtenidos son {3, 5, 6}.

Entrada: S = “1010”
Salida: {3, 5, 6, 9, 10, 12}

Enfoque: El problema se puede resolver usando un Conjunto . Siga los pasos a continuación para resolver el problema:

A continuación se muestra la implementación del enfoque anterior:

Python3

# Python3 program for the above approach
 
from itertools import permutations
 
# Function to convert binary
# string to equivalent decimal
def binToDec(n):
     
    num = n
    dec_value = 0
 
    # Initializing base
    # value to 1, i.e 2 ^ 0
    base1 = 1
 
    len1 = len(num)
     
    for i in range(len1 - 1, -1, -1):
         
        if (num[i] == '1'):
            dec_value += base1
         
        base1 = base1 * 2
 
    # Return the resultant
    # decimal number
    return dec_value
 
# Function to print all distinct
# decimals represented by the
# all permutations of the string
def printDecimal(permute):
     
    # Set to store distinct
    # decimal representations
    allDecimals = set()
     
    # Iterate over all permutations
    for i in permute:
         
        # Initialize an empty string
        s = ""
         
        # Traverse the list
        for j in i:
           
            # Add each element
            # to the string
            s += j
             
        # Convert the current binary
        # representation to decimal
        result = binToDec(s)
         
        # Add the current decimal
        # value into the set
        allDecimals.add(result)
      
    # Print the distinct decimals  
    print(allDecimals)   
 
# Utility function to print all
# distinct decimal representations
# of all permutations of string
def totalPermutations(string):
   
    # Convert string to list
    lis = list(string)
     
    # Built in method to store all
    # the permutations of the list
    permutelist = permutations(lis)
     
    printDecimal(permutelist)
 
 
# Given binary  string
binarystring = '1010'
 
# Function call to print all distinct
# decimal values represented by all
# permutations of the given string
totalPermutations(binarystring)
Producción: 

{3, 5, 6, 9, 10, 12}

 

Complejidad de Tiempo: O(N * N!)
Espacio Auxiliar: O(N * N!)

Publicación traducida automáticamente

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