Cùng mô hình, đổi bảng kí tự
```python
def genWords(A, k, n, alphabet):
global count
if k == n:
print(''.join(A))
count += 1
else:
for value in alphabet:
A.append(value)
genWords(A, k + 1, n, alphabet)
A.pop()
```
Với alphabet=['R','G','B'], mỗi vị trí thử lần lượt R,G,B. Bắt đầu count=0 và genWords([],0,n,alphabet). Tại cơ sở, join in xâu đã chọn; sau mỗi lời gọi nhỏ vẫn pop để khôi phục tiền tố.
Với n=2, kết quả theo thứ tự RR,RG,RB,GR,GG,GB,BR,BG,BB, có 3²=9 nghiệm. Bảng kí tự là miền lựa chọn gồm các giá trị khác nhau; đổi thứ tự thử sẽ đổi thứ tự in, không đổi tập nghiệm.
Biểu diễn hex đúng ba kí tự
Dùng bảng kí tự 0123456789ABCDEFvà n=3. Theo mô hình của SGV, cả ba vị trí đều được chọn 0, nên kết quả có từ 000 đếnFFF, gồm16³=4096 xâu đúng ba kí tự. Các số 0 đầu được giữ trong biểu diễn.
Nếu một đề khác quy định chữ số đầu không được bằng 0 thì miền lựa chọn đầu thay đổi; không dùng ngầm điều kiện ấy cho mô hình hiện tại. Bài đang sinh đủ các biểu diễn có độ rộng ba kí tự như mã hướng dẫn của sách.
Chạy rgb2 để kiểm chín xâu và tổng 9; chạy hexđể kiểm dòng đầu 000, cuốiFFFvà tổng 4096. Không chỉ kiểm tổng, còn cần đúng độ dài, đúng bảng kí tự và không lặp xâu.
Bài luyện
Có bao nhiêu xâu độ dài 2 trên bảng R,G,B?
3 là số lựa chọn tại một vị trí.
6 là số hoán vị của ba kí tự, khác bài này.
8 là số xâu nhị phân dài3.
Mỗi vị trí có 3 lựa chọn, tổng 3²=9.
Lời giải
Hai vị trí được chọn độc lập từ R,G,B, cho 3×3=9 xâu. Kí tự có thể lặp như RR hoặc GG.
Bài luyện
Trong mô hình hex ba kí tự của bài,000 có được sinh không?
Bảng kí tự được dùng như nhau cho cả ba vị trí.
Đó là điều kiện khác với mô hình đã nêu.
Các kí tự 0 đến 9 cũng thuộc bảng hex.
Cần giữ đúng độ dài ba kí tự.
Lời giải
Mô hình theo SGV dùng đầy đủ16 kí tự ở mỗi vị trí, gồm0. Vì vậy000 là một trong 4096 biểu diễn đúng ba kí tự.
Bài luyện
Đổi thứ tự alphabet từ R,G,B thành B,G,R làm gì thay đổi?
n vẫn giữ nguyên.
Vẫn có cùng ba lựa chọn tại mỗi vị trí.
Số lựa chọn và độ dài chưa đổi.
Bài không cấm dùng lại kí tự ở vị trí khác.
Lời giải
Vòng for thử theo thứ tự của bảng kí tự. Đổi thứ tự này đổi hành trình duyệt và thứ tự xuất, nhưng vẫn thử đủ từng lựa chọn ở mỗi vị trí nên tập nghiệm không đổi.
Đang học