Liệt kê tất cả các kết hợp có thay thế (hoặc kết hợp với sự lặp lại) có kích thước k từ một tập hợp n phần tử.
Một sự kết hợp với sự thay thế là một multiset không có thứ tự mà mọi phần tử trong nó cũng nằm trong tập hợp n phần tử. Lưu ý rằng:
- Nó không có thứ tự. Vì vậy, một bộ được in trước đó với một thứ tự khác không nên được in lại.
- Nó là một multiset. Phần tử tương tự có thể (nhưng không bắt buộc) xuất hiện nhiều lần. Đây là sự khác biệt duy nhất giữa sự kết hợp với sự thay thế và sự kết hợp bình thường.
- Bộ nên có chính xác k phần tử.
Ngoài ra, nó cũng là một tập hợp con size k của multiset chứa mỗi phần tử n lần k .
Đầu vào phải là n và k , trong đó các phần tử là n số nguyên dương hoặc không âm đầu tiên , hoặc n phần tử và k , trong đó bạn có thể giả sử các phần tử n khác nhau.
Đầu ra phải là một danh sách tất cả các kết hợp có thay thế với kích thước k từ tập đã cho. Bạn có thể in chúng và các yếu tố trong mỗi thứ tự theo bất kỳ thứ tự nào.
Bạn không thể sử dụng kết hợp tạo nội dung với thay thế. Nhưng bạn có thể sử dụng nội dung để tạo kết hợp thông thường, hoán vị, bộ dữ liệu, v.v.
Đây là mã golf, mã ngắn nhất thắng.
Thí dụ
Input: 4 2
Output: [0 0] [0 1] [0 2] [0 3] [1 1] [1 2] [1 3] [2 2] [2 3] [3 3]