Duyệt sinh các chỉnh hợp 2
Point: 100.0
Time limit: 1.5s
Memory limit: 98 M
Input:
stdin
Output:
stdout
Author:
Problem type
Phương pháp: Duyệt hoán vị
Ngôn ngữ cho phép
C, C#, C++, Java, Pascal, Python, Text
Theo định nghĩa toán học, chỉnh hợp chập \(k\) của \(n\) phần tử là một bộ sắp thứ tự gồm \(k\) phần tử khác nhau của tập hợp gồm \(n\) phần tử. Ví dụ cho \(X = (1,2,3)\) thì các chỉnh hợp chập \(2\) của \(X\) là \((1,2),(1,3),(2,1), (2,3), (3,1), (3,2)\).
Với bài tập này bạn hãy liệt kê các chỉnh chập \(k\) của \(n\) phần tử \(X = (a_1,a_2,...,a_n)\).
Dữ liệu vào Specification
- Dòng 1 gồm \(k\) và \(n (1 ≤ k ≤ n ≤ 10)\)
- Dòng 2 ghi \(n\) giá trị có giá trị tuyệt đối không vượt quá \(10^9\)
Dữ liệu ra Specification
- Mỗi dòng in một chỉnh hợp, các chỉnh hợp in theo thứ tự từ điển.
- Dòng cuối cùng in số lượng chỉnh hợp vừa in ra.
Sample Input
2 3
1 4 9
Sample Output
1 4
1 9
4 1
4 9
9 1
9 4
6