Thuật toán sinh nhị phân
C++:
#include <iostream>
using namespace std;
void generateBinaryStrings(int binaryArray[], int index, int n) {
if (index == n) {
for (int i = 0; i < n; i++) {
cout << binaryArray[i];
}
cout << endl;
return;
}
for (int bit = 0; bit <= 1; bit++) {
binaryArray[index] = bit;
generateBinaryStrings(binaryArray, index + 1, n);
}
}
int main() {
int n = 3; // Chiều dài của dãy nhị phân
int binaryArray[3]; // Mảng tĩnh để lưu trữ dãy nhị phân
generateBinaryStrings(binaryArray, 0, n);
return 0;
}
Giải thích mã nguồn:
-
Hàm
generateBinaryStrings:- Chức năng: Sinh tất cả các dãy nhị phân có chiều dài
nsử dụng phương pháp quay lui. - Tham số:
binaryArray: Mảng tĩnh lưu trữ dãy nhị phân hiện tại.index: Vị trí hiện tại trong dãy nhị phân.n: Chiều dài của dãy nhị phân.
- Mô tả:
- Nếu
indexbằngn, nghĩa là đã tạo được một dãy nhị phân hoàn chỉnh, in ra dãy đó. - Nếu không, duyệt qua hai giá trị có thể (0 và 1).
- Gán giá trị
bitvàobinaryArraytại vị tríindex. - Gọi đệ quy để tiếp tục tạo dãy nhị phân cho vị trí tiếp theo (
index + 1).
- Nếu
- Chức năng: Sinh tất cả các dãy nhị phân có chiều dài
-
Hàm
main:- Chức năng: Điểm bắt đầu của chương trình.
- Mô tả:
- Khởi tạo chiều dài của dãy nhị phân
nlà 3. - Khởi tạo mảng tĩnh
binaryArrayvới kích thướcn. - Gọi hàm
generateBinaryStringsđể sinh và in ra tất cả các dãy nhị phân có chiều dàin.
- Khởi tạo chiều dài của dãy nhị phân