Di sini kita akan melihat kaedah yang menarik untuk menjana nombor binari dari 1 hingga n. Kami melakukan ini menggunakan baris gilir. Pada mulanya, nombor binari pertama '1' akan diadakan dalam baris gilir. Sekarang berulang kali keluarkan elemen daripada baris gilir dan cetaknya dan tambah 0 pada penghujung elemen sebelumnya dan 1 pada penghujung elemen sebelumnya dan masukkannya ke dalam baris gilir. Mari kita lihat algoritma untuk mendapatkan idea ini. Terjemahan bahasa Cina bagi
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
Atas ialah kandungan terperinci Cara yang menarik untuk menjana nombor binari dari 1 hingga n?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!