从1到n生成二进制数的有趣方法?

在这里,我们将看到一种有趣的方法,用于生成从1到n的二进制数。在这里,我们正在使用队列。最初,队列将保留第一个二进制数字“ 1”。现在,从队列中重复删除元素,进行打印,并在最前面的项目的末尾附加0,并在最前面的时间的末尾附加1,然后将它们插入队列。让我们看一下获得想法的算法。

算法

genBinaryNumbers(n)

Begin

   define empty queue.

   insert 1 into the queue

   while n is not 0, do

      delete element from queue and store it into s1

      print s1

      s2 := s1

      insert s1 by adding 0 after it into queue

      insert s1 by adding 1 after it into queue

      decrease n by 1

   done

End

示例

#include <iostream>

#include <queue>

using namespace std;

void genBinaryNumbers(int n){

   queue<string> qu;

   qu.push("1");

   while(n != 0){

      string s1 = qu.front();

      qu.pop();

      cout << s1 << " ";

      string s2 = s1;

      qu.push(s1 + "0");

      qu.push(s1 + "1");

      n--;

   }

}

int main() {

   int n = 15;

   genBinaryNumbers(n);

}

输出结果

1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111

以上是 从1到n生成二进制数的有趣方法? 的全部内容, 来源链接: utcz.com/z/343589.html

回到顶部