Computer >> Máy Tính >  >> Lập trình >> lập trình C

Một phương pháp thú vị để tạo số nhị phân từ 1 đến n?

Ở đây chúng ta sẽ thấy một phương pháp thú vị để tạo các số nhị phân từ 1 đến n. Ở đây chúng tôi đang sử dụng hàng đợi. Ban đầu hàng đợi sẽ chứa số nhị phân đầu tiên ‘1’. Bây giờ, hãy liên tục xóa phần tử khỏi hàng đợi và in phần tử đó, đồng thời thêm số 0 vào cuối mục phía trước và nối thêm 1 vào cuối thời gian trước và chèn chúng vào hàng đợi. Hãy để chúng tôi xem thuật toán để có được ý tưởng.

Thuật toán

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

Ví dụ

#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);
}

Đầu ra

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