Module: Ulangi semua subcorak topeng yang diberikan


Problem

1 /7


Rentetan binari dengan panjang tertentu

Theory Click to read/hide

Ia berlaku bahawa adalah perlu untuk menghitung semua jujukan bit dengan panjang tertentu. Atau dengan kata lain, ulangi semua pilihan yang mungkin, di mana untuk setiap objek satu daripada dua keadaan yang mungkin dipilih.

Dalam situasi sedemikian, adalah mungkin untuk melaksanakan penghitungan menggunakan topeng bit. Kelebihan pendekatan ini ialah kod sedemikian berfungsi secara bukan rekursif dan beroperasi pada nombor dan bukannya koleksi atau sebagainya, yang sangat meningkatkan prestasi.

Kod umum menggunakan bitmasks diberikan di bawah: intn; // bilangan objek (panjang jujukan bit) untuk (int mask = 0; mask < (1 << n); mask++) { // gelung melalui semua nombor dari 0 hingga 2^n - 1, di mana setiap nombor sepadan dengan bitmask // topeng nombor semasa ialah bitmask, di mana bit ke-i menentukan keadaan objek ke-i for (int i = 0; i < n; i++) { // berulang ke atas n bit untuk memahami keadaan setiap objek if ((1 << i) & mask) { // semak sama ada bit ke-i sama dengan satu // memproses pilihan bahawa objek ke-i mempunyai keadaan '1' } else { // kes apabila bit ke-i ialah sifar // memproses pilihan bahawa objek ke-i bagi keadaan '0' } } }
Kod ini dijalankan dalam O(2^n * f(n)), dengan f(n) ialah masa yang anda perlukan untuk memproses satu lelaran tertentu.

Problem

Nombor N yang diberi cetak semua rentetan panjang N yang terdiri daripada sifar dan satu dalam susunan leksikografi.

Dalam menyelesaikan masalah, gunakan penghitungan semua subcorak.

Input

Nombor tunggal N diberikan. (semula jadi, 1 ≤ N ≤ 10)

Output

Adalah perlu untuk mencetak semua rentetan panjang N yang terdiri daripada sifar dan satu dalam susunan leksikografi, satu setiap baris

 
Input Output
2 00 01 10 11