JavaScript is required

Giả sử dãy 1 4 5 6 là cấu hình hiện tại tổ hợp chập 4 của 6 phần tử. Cấu hình nào sau đây sinh ra cấu hình này theo thuật toán sinh:

A.

2135

B.

1246

C.

1356

D.
2145
Trả lời:

Đáp án đúng: B


Thuật toán sinh tổ hợp chập k của n phần tử hoạt động bằng cách tìm từ phải sang trái phần tử a[i] đầu tiên mà a[i] < n - k + i. Sau đó tăng a[i] lên 1 đơn vị và cập nhật các phần tử phía sau a[i] theo quy tắc a[j] = a[j-1] + 1 với j > i. Xét cấu hình 1 4 5 6: * **Phương án A: 2 1 3 5:** Đây không phải là một tổ hợp hợp lệ vì các phần tử không được sắp xếp tăng dần. * **Phương án B: 1 2 4 6:** Tìm từ phải sang trái, phần tử đầu tiên thỏa mãn a[i] < n - k + i là a[2] = 2 (vì 2 < 6 - 4 + 2 = 4). Tăng a[2] lên 1 thành 3. Các phần tử phía sau sẽ là a[3] = 3 + 1 = 4, a[4] = 4 + 1 = 5. Vậy cấu hình sinh ra là 1 3 4 5, khác với cấu hình 1 4 5 6. * **Phương án C: 1 3 5 6:** Tìm từ phải sang trái, phần tử đầu tiên thỏa mãn a[i] < n - k + i là a[2] = 3 (vì 3 < 6 - 4 + 2 = 4). Tăng a[2] lên 1 thành 4. Các phần tử phía sau sẽ là a[3] = 4 + 1 = 5, a[4] = 5 + 1 = 6. Vậy cấu hình sinh ra là 1 4 5 6. * **Phương án D: 2 1 4 5:** Đây không phải là một tổ hợp hợp lệ vì các phần tử không được sắp xếp tăng dần. Vậy, cấu hình 1 3 5 6 sinh ra cấu hình 1 4 5 6 theo thuật toán sinh tổ hợp.

Câu hỏi liên quan