Sinh tất cả các tập con bằng thuật toán Quay lui
Trong bài toán tinh chỉnh siêu tham số (Hyperparameter Grid Search) tại AI Empire Academy, cần sinh toàn bộ các tổ hợp tập con (Power Set) của một tập các tham số đầu vào.
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: recursion basics, list mutation.
Nội dung đề bài
Mục tiêu kiến thức
- Hiểu mô hình Cây không gian trạng thái (State-space Tree) trong thuật toán Đệ quy Quay lui (Backtracking).
- Nắm vững chu trình 3 bước kinh điển: Chọn (Choose) → Đệ quy (Explore) → Bỏ chọn (Unchoose/Backtrack).
- Khắc phục bẫy lưu tham chiếu đối tượng khả biến trong Python: luôn lưu bản sao
current.copy()hoặclist(current).
Mô tả bài toán
Trong bài toán tinh chỉnh siêu tham số (Hyperparameter Grid Search) tại AI Empire Academy, cần sinh toàn bộ các tổ hợp tập con (Power Set) của một tập các tham số đầu vào.
Cho danh sách các số nguyên phân biệt nums. Hãy viết hàm generate_subsets(nums: list[int]) -> list[list[int]] sinh tất cả các tập hợp con khả dĩ của nums bằng thuật toán Quay lui.
Quy tắc:
- Tập con rỗng
[]và tập con đầy đủ chính là hai tập con hợp lệ. - Với mảng có N phần tử, kết quả phải có đúng 2N tập con.
- Để đảm bảo tính nhất quán khi chấm bài:
- Sắp xếp mảng
numsban đầu theo thứ tự tăng dần trước khi quay lui. - Các tập con trong kết quả trả về được sắp xếp theo thứ tự từ điển (Lexicographical order).
Input
Một danh sách các số nguyên phân biệt nums.
Output
Danh sách các danh sách con list[list[int]].
Ràng buộc
- 0 ≤ len(nums) ≤ 12.
- Các phần tử trong
numslà duy nhất. - Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
Ví dụ 1
Input
`nums = [1, 2, 3]`Output
[
[],
[1],
[1, 2],
[1, 2, 3],
[1, 3],
[2],
[2, 3],
[3]
]Giải thích
Mảng 3 phần tử có đúng 23 = 8 tập con.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
