Tư vấn code bài toán in ra tất cả các chuỗi nhị phân có độ dài n

Tình hình là em mới học giải thuật. Em đọc tài liệu của thầy Lê Minh Hoàng tới bài in ra tất cả các chuỗi nhị phân có độ dài n. Sau 3 ngày thì em mới code được chừng này.

Nhưng khi chạy thì thiếu mất mấy chuỗi

Anh nào rành thì chỉ hộ em với

while(i>=0) chứ ko phải while(i>0)

1 Like

tại sao vậy anh ? anh có thể giải thích giúp em được không :smiley:

vì mảng x có bit cao nhất tại chỉ số i=0

1 Like

anh có thể giải thích kĩ hơn một chút được không ạ ? :sweat_smile:

While(i>0) thì code của bạn chỉ chạy tới n-1 thôi. Do đâu thì như Gió nói rồi đó.
Do bạn đã bỏ qua bit cao nhất ở vị trí 0.
Như trường hợp này: 011
thì ở vòng while(x[i]==1..) --i; làm cho i = 0. (vị trí cao nhất đó)
Đáng lẽ nó sẽ in ra 100 ở while kế tiếp, nhưng khi trở lại đầu vòng while, nó kiểm tra thấy i = 0 không thỏa i>0 nên thèm làm nữa. Và thoát luôn.

1 Like

À em thông rồi :smiley: TY

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?