Đề bài: Tìm các dãy nhị phân có chiều dài n do người dùng nhập vào, với n là số nguyên dương
Ví dụ n = 3 thì có kết quả là:
000
001
010
011
100
101
110
111
Đây là bài code của em:
#include <stdio.h>
#include <math.h>
void bitFlip (int &a){
if (a == 0) a++;
else if (a == 1) a--;
}
void binaryFlip (int spt, int a[]){
for (int i = spt - 1; i >= 0; i--){
if (a[i] == 0){
bitFlip(a[i]);
break;
} else if (a[i] == 1 && a[i-1] == 0){
for (int j = spt - 1; j >= i; j--){
bitFlip(a[j]);
}
}
}
}
void xuatBinary (int spt, int a[]){
for (int i = 0; i < spt; i++){
printf("%d", a[i]);
}
}
int main(){
int n;
printf("Nhap n: ");
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++){
a[i] = 0;
}
for (int i = 1; i <= pow(2, n); i++){
xuatBinary(n, a);
printf("\n");
binaryFlip(n, a);
}
}
Kết quả ra đúng nhưng em cảm thấy nó khá rườm rà và dài dòng, cao nhân nào có cách hay hơn không ạ? Em cảm ơn.
nhưng đề yêu cầu phải ghi dãy đầy đủ ra, tính luôn cả những số 0 đứng đầu, bây giờ làm sao chị ơi
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?