[Đội tuyển HSG9 Khóa 12]Thuật toán sinh

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 Xâu nhị phân 100 (p) 1.0s 1G
2 Tập con 100 (p) 1.0s 1G
3 Sinh hoán vị 100 (p) 1.0s 256M
4 Chỉnh hợp 100 (p) 1.0s 1G

1. Xâu nhị phân

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Hãy in tất cả dãy nhị phân độ dài \(n\).

Input

Dòng đầu tiên chứa số nguyên dương \(n(n\leq 10)\)

Output

In ra những xâu nhị phân có độ dài \(n\) theo thứ tự bất kỳ.

Sample
Input
2
Output
00
01
10
11

2. Tập con

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Liệt kê các tập con độ dài \(k\) của tập \(S={1,2,…,n}.\)

Input

Một dòng gồm hai số nguyên \(n,k(1 \leq k \leq n \leq 20)\).

Output

Liệt kê các tập con theo thứ tự từ điển.

Sample
Input
4 2
Output
1 2
1 3
1 4
2 3
2 4
3 4

3. Sinh hoán vị

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Sinh các hoán vị từ tập \([1..n]\) biết mỗi số chỉ xuất hiện một lần và trong mỗi hoán vị số nào trong tập \([1..n]\) cũng phải xuất hiện.

Yêu cầu

  • Cho số nguyên dương \(n\), hãy in tất cả các hoán vị của \(n\) số tự nhiên đầu tiên theo thứ tự từ điển.

Input

  • 1 dòng duy nhất là số \(n\) \((0<n<10)\)

Output

  • Kết quả bài toán
Sample
Input
3
Output
123
132
213
231
312
321

4. Chỉnh hợp

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Hãy in ra tất cả các chỉnh hợp chập \(k\) của các số nguyên dương \(1,2,3,…,n.\)
Chỉnh hợp là cách chọn những phần tử từ một nhóm lớn hơn và có phân biệt thứ tự.

Input

Một dòng gồm hai số nguyên \(n,k(1 \leq k < n \leq 7)\).

Output

Mỗi dòng gồm \(k\) số nguyên là một chỉnh hợp. Các chỉnh hợp cần được in ra theo thứ tự từ điển.

Sample
Input
3 2
Output
1 2
1 3
2 1
2 3
3 1
3 2