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

Đếm nghiệm và in xâu nhị phâ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

Mỗi nghiệm chỉ tăng đếm một lần

Hai bản sinh dãy đặt count+=1 ngay trong nhánh k==n, sau khi in nghiệm. Không tăng biến đếm ở mọi lời gọi, vì các tiền tố chưa đủ độ dài chưa phải nghiệm. Trước một lượt sinh mới cần count=0. Biến toàn cục giữ giá trị qua các lần gọi trong cùng chương trình; không đặt lại sẽ cộng lẫn nghiệm của lượt trước. Dòng “Tổng số nghiệm” được in sau lời gọi gốc, khi toàn bộ nhánh đã xét xong. Với nhị phân dài n, số nghiệm là $2^n$. n=0 cho một nghiệm rỗng vì đã chọn đủ 0 vị trí ngay từ đầu; không phải 0 nghiệm.

Chuỗi kí tự cần nối các kí tự

Danh sách[0,1]và xâu"01"là hai kiểu biểu diễn khác nhau. Để in xâu, dùng bảng kí tự['0','1']và tại lá in ''.join(A). A lúc này chứa các kí tự, không phải số nguyên. ```python A = ['0', '1'] print(''.join(A)) ``` Kết quả in01, giữ cả số 0 đầu. Dùng trực tiếp join trên[0,1]không đúng vì các phần tử không phải xâu; cần tạo dãy kí tự hoặc chuyển từng phần tử sang str trước khi nối.

Kiểm số dòng nghiệm và dạng kết quả

Chạy nhi-phan2 để nhận 00,01,10,11 và dòng tổng số nghiệm4. Chế độ them-xoa2 in các danh sách số, còn nhi-phan2 in xâu kí tự. Với nhi-phan0, có một dòng trống biểu diễn xâu rỗng và dòng tổng số nghiệm1. Với bản danh sách, nghiệm ấy hiện thành[]. Bản tải giới hạn tối đa4096 nghiệm để dễ chạy trên dữ liệu nhỏ; đây là giới hạn thực hành, không phải định nghĩa của quay lui.

Bài luyện

Vì sao count+=1 nằm ở cơ sở k==n?
Chọn một đáp án

Bài luyện

Với A=['0','1'], ''.join(A) cho gì?
Chọn một đáp án

Bài luyện

Với n=0, sinh toàn bộ xâu nhị phân có bao nhiêu nghiệm?
Chọn một đáp án

Đang học