btvn.vn
Tìm kiếm Đăng nhập

Sinh dãy nhị phân bằng dãy tạo sẵn

Lưu trên thiết bị này
Chuyên đề lựa chọn CS: Kĩ thuật duyệt · Chọn bài khác

Dãy đã có đủ n chỗ từ đầu

```python def genBinary_fixed(A, k, n): global count if k == n: print(A) count += 1 else: for value in range(2): A[k] = value genBinary_fixed(A, k + 1, n) ``` Trước khi gọi, đặt count=0, tạo A=[0]*n rồi gọi genBinary_fixed(A,0,n). Tại k, các vị trí trước k đã được chọn; vòng for thử 0 rồi1 và gán vào A[k]. Lời gọi với k+1 chọn vị trí tiếp theo. Khi k==n, mọi vị trí đã có giá trị nên in A, tăng count đúng một lần và không truy cập A[n]. n được truyền rõ vào hàm; count là biến đếm toàn cục được khai báo global như cách đếm nghiệm trong sách.

Không cần xóa chỗ đã cấp sẵn

Với n=2, chương trình in lần lượt: ```text [0, 0] [0, 1] [1, 0] [1, 1] ``` Sau mỗi lời gọi nhỏ, quay về vòng thử. Dãy vẫn có độ dài n; lựa chọn mới ghi đè vào đúng vị trí, không thêm phần tử nên không cần pop. Lệnh pop ở bản này sẽ làm mất chỗ cần dùng. Chạy chế độ co-dinh với 2 trong tệp tải. Kiểm đủ bốn dãy và dòng tổng số nghiệm4. Với n=0, cơ sở đúng ngay và in[]một lần, tương ứng một dãy rỗng.

Bài luyện

Tại sao kiểm k==n trước khi gán A[k]?
Chọn một đáp án

Bài luyện

Vì sao bản tạo sẵn A=[0]*n không cần pop sau lời gọi nhỏ?
Chọn một đáp án

Bài luyện

Bản này với n=2 có bao nhiêu nghiệm?
Chọn một đáp án

Đang học