Un método interesante para generar números binarios del 1 al n

Dado un número n, escribe una función que genere e imprima todos los números binarios con valores decimales del 1 al n. 

Ejemplos: 

C++

// C++ program to generate binary numbers from 1 to n
#include <bits/stdc++.h>
using namespace std;
 
// This function uses queue data structure to print binary
// numbers
void generatePrintBinary(int n)
{
    // Create an empty queue of strings
    queue<string> q;
 
    // Enqueue the first binary number
    q.push("1");
 
    // This loops is like BFS of a tree with 1 as root
    // 0 as left child and 1 as right child and so on
    while (n--) {
        // print the front of queue
        string s1 = q.front();
        q.pop();
        cout << s1 << "\n";
 
        string s2 = s1; // Store s1 before changing it
 
        // Append "0" to s1 and enqueue it
        q.push(s1.append("0"));
 
        // Append "1" to s2 and enqueue it. Note that s2
        // contains the previous front
        q.push(s2.append("1"));
    }
}
 
// Driver program to test above function
int main()
{
    int n = 10;
    generatePrintBinary(n);
    return 0;
}

Java

// Java program to generate binary numbers from 1 to n
 
import java.util.LinkedList;
import java.util.Queue;
 
public class GenerateBNo {
    // This function uses queue data structure to print
    // binary numbers
    static void generatePrintBinary(int n)
    {
        // Create an empty queue of strings
        Queue<String> q = new LinkedList<String>();
 
        // Enqueue the first binary number
        q.add("1");
 
        // This loops is like BFS of a tree with 1 as root
        // 0 as left child and 1 as right child and so on
        while (n-- > 0) {
            // print the front of queue
            String s1 = q.peek();
            q.remove();
            System.out.println(s1);
 
            // Store s1 before changing it
            String s2 = s1;
 
            // Append "0" to s1 and enqueue it
            q.add(s1 + "0");
 
            // Append "1" to s2 and enqueue it. Note that s2
            // contains the previous front
            q.add(s2 + "1");
        }
    }
 
    // Driver program to test above function
    public static void main(String[] args)
    {
        int n = 10;
        generatePrintBinary(n);
    }
}
// This code is contributed by Sumit Ghosh

Python3

# Python program to generate binary numbers from
# 1 to n
 
# This function uses queue data structure to print binary numbers
 
 
def generatePrintBinary(n):
 
    # Create an empty queue
    from queue import Queue
    q = Queue()
 
    # Enqueue the first binary number
    q.put("1")
 
    # This loop is like BFS of a tree with 1 as root
    # 0 as left child and 1 as right child and so on
    while(n > 0):
        n -= 1
        # Print the front of queue
        s1 = q.get()
        print (s1)
 
        s2 = s1  # Store s1 before changing it
 
        # Append "0" to s1 and enqueue it
        q.put(s1+"0")
 
        # Append "1" to s2 and enqueue it. Note that s2
        # contains the previous front
        q.put(s2+"1")
 
 
# Driver program to test above function
n = 10
generatePrintBinary(n)
 
# This code is contributed by Nikhil Kumar Singh(nickzuck_007)

C#

// C# program to generate binary
// numbers from 1 to n
using System;
using System.Collections.Generic;
 
class GFG {
    // This function uses queue data
    // structure to print binary numbers
    public static void generatePrintBinary(int n)
    {
        // Create an empty queue of strings
        LinkedList<string> q = new LinkedList<string>();
 
        // Enqueue the first binary number
        q.AddLast("1");
 
        // This loops is like BFS of a tree
        // with 1 as root 0 as left child
        // and 1 as right child and so on
        while (n-- > 0) {
            // print the front of queue
            string s1 = q.First.Value;
            q.RemoveFirst();
            Console.WriteLine(s1);
 
            // Store s1 before changing it
            string s2 = s1;
 
            // Append "0" to s1 and enqueue it
            q.AddLast(s1 + "0");
 
            // Append "1" to s2 and enqueue it.
            // Note that s2 contains the previous front
            q.AddLast(s2 + "1");
        }
    }
 
    // Driver Code
    public static void Main(string[] args)
    {
        int n = 10;
        generatePrintBinary(n);
    }
}
 
// This code is contributed by Shrikant13

Javascript

<script>
 
// JavaScript program to generate binary numbers from 1 to n
 
// This function uses queue data structure to print binary
// numbers
function generatePrintBinary(n)
{
    // Create an empty queue of strings
    var q = [];
 
    // Enqueue the first binary number
    q.push("1");
 
    // This loops is like BFS of a tree with 1 as root
    // 0 as left child and 1 as right child and so on
    while (n--) {
        // print the front of queue
        var s1 = q[0];
        q.shift();
        document.write( s1 + "<br>");
 
        var s2 = s1; // Store s1 before changing it
 
        // Append "0" to s1 and enqueue it
        q.push(s1+"0");
 
        // Append "1" to s2 and enqueue it. Note that s2
        // contains the previous front
        q.push(s2+"1");
    }
}
 
// Driver program to test above function
var n = 10;
generatePrintBinary(n);
 
</script>

Publicación traducida automáticamente

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