Sinh số nhị phân từ 1 đến n dùng queue: bắt đầu với "1", lặp: lấy đầu, in, đẩy "s+0" và "s+1" vào queue.
Ví dụ n=5
Queue: "1" → in 1, đẩy "10","11" → in 10, đẩy "100","101" → in 11, đẩy "110","111"...
Chương trình
#include <iostream>
#include <queue>
using namespace std;
void genBinary(int n) {
queue<string> q;
q.push("1");
while (n--) {
string s = q.front(); q.pop();
cout << s << " ";
q.push(s + "0");
q.push(s + "1");
}
}
int main() {
genBinary(15);
return 0;
}
Kết quả
1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111