Liệt Kê Hoán Vị

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Liệt kê tất cả các hoán vị của N phần tử {1, 2, ..., N}.

Dữ liệu vào:

Số nguyên dương N.

Dữ liệu ra:

Các hoán vị theo thứ tự từ điển.

Giới hạn:

1 <= N <= 9

Ví dụ:

Input:
3
Output:
1 2 3 
1 3 2 
2 1 3 
2 3 1 
3 1 2 
3 2 1

Hoán Vị Ngược

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Liệt kê các hoán vị của {1, 2, ..., N} theo thứ tự từ điển giảm dần (từ lớn nhất về nhỏ nhất).

Dữ liệu vào:

Số nguyên N.

Dữ liệu ra:

Các hoán vị theo thứ tự ngược.

Giới hạn:

1 <= N <= 9

Ví dụ:

Input:
3
Output:
3 2 1 
3 1 2 
2 3 1 
2 1 3 
1 3 2 
1 2 3

Mã Gray

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Mã Gray độ dài N là dãy các xâu nhị phân độ dài N sao cho hai xâu liên tiếp chỉ khác nhau đúng 1 bit. Hãy liệt kê mã Gray độ dài N (Bắt đầu từ xâu toàn 0). Công thức chuyển từ nhị phân sang Gray: G[i] = B[i] XOR B[i-1] (với bit đầu tiên giữ nguyên).

Dữ liệu vào:

Số nguyên N.

Dữ liệu ra:

Các xâu mã Gray độ dài N.

Giới hạn:

1 <= N <= 10

Ví dụ:

Input:
3
Output:
000 001 011 010 110 111 101 100

Xếp Chữ Cái Mô tả

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho một xâu ký tự S gồm các ký tự khác nhau. Hãy liệt kê tất cả các hoán vị của xâu S theo thứ tự từ điển.

Dữ liệu vào:

Xâu S (độ dài không quá 9).

Dữ liệu ra:

Các hoán vị theo thứ tự từ điển.

Giới hạn:

Độ dài S <= 9

Ví dụ:

Input:
XYZ
Output:
XYZ XZY YXZ YZX ZXY ZYX

Chọn Số Ma Trận

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho ma trận vuông A kích thước NxN. Hãy chọn ra N số từ ma trận sao cho mỗi hàng chọn đúng 1 số và mỗi cột chọn đúng 1 số, và tổng các số được chọn bằng K. In ra các vị trí cột được chọn cho từng hàng. (Gợi ý: Sinh hoán vị chỉ số cột).

Dữ liệu vào:

N và K.

Ma trận A.

Dữ liệu ra:

Mỗi dòng là một cách chọn (ghi chỉ số cột của hàng 1, hàng 2, ..., hàng N).

Giới hạn:

N <= 10

Ví dụ:

Input:
3 15 
1 2 3 
4 5 6 
7 8 9
Output:
1 2 3 
1 3 2 
2 1 3 
2 3 1 
3 1 2 
3 2 1

Hoán Vị Chữ Cái Ngược

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho xâu ký tự S (các ký tự khác nhau). Hãy liệt kê các hoán vị của xâu S theo thứ tự từ điển giảm dần.

Dữ liệu vào:

Xâu S.

Dữ liệu ra:

Các hoán vị giảm dần.

Giới hạn:

Độ dài S <= 9

Ví dụ:

Input:
ABC
Output:
CBA CAB BCA BAC ACB ABC

Chia Hai Nhóm

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho N quả táo với khối lượng khác nhau. Hãy chia N quả táo thành 2 nhóm sao cho chênh lệch khối lượng giữa 2 nhóm là nhỏ nhất. In ra độ chênh lệch đó. (Sử dụng sinh nhị phân để thử các cách chia).

Dữ liệu vào:

Dòng 1: N.

Dòng 2: Khối lượng các quả táo.

Dữ liệu ra:

Chênh lệch nhỏ nhất.

Giới hạn:

1 <= N <= 20

Ví dụ:

Input:
3 
1 2 4
Output:
1

Hoán Vị Trước

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho một hoán vị của {1, 2, ..., N}. Tìm hoán vị xuất hiện ngay trước nó. Nếu là hoán vị đầu tiên, in ra hoán vị cuối cùng.

Dữ liệu vào:

Số nguyên N và hoán vị hiện tại.

Dữ liệu ra:

Hoán vị liền trước.

Giới hạn:

1 <= N <= 1000

Ví dụ:

Input:
3 
2 1 3
Output:
1 3 2

Xâu AB (phương pháp sinh)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Nhập vào số nguyên N. Nhiệm vụ của bạn ở bài tập này là sinh ra các xâu chỉ bao gồm 2 kí tự A và B theo thứ tự từ điển giảm dần và có N ký tự.


Đầu vào: Dòng duy nhất chứa số nguyên dương N là độ dài của xâu.


Ràng buộc: 1<=N<=10


Đầu ra: In ra các xâu AB, mỗi xâu được in trên 1 dòng


Input:
3
Output:
BBB
BBA
BAB
BAA
ABB
ABA
AAB
AAA

Số thứ tự tổ hợp (thuật toán sinh - phương pháp sinh)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho 2 số nguyên dương N và K và một tổ hợp K phần tử của tập N phần tử các số từ 1 tới N. Bạn hãy xác định xem tổ hợp đã cho có số thứ tự bao nhiêu nếu xếp các tổ hợp chập K của N theo thứ tự ngược. Vi dụ N = 5, K = 3 và tố hợp đã cho là (2, 3, 4) sẽ là tố hợp có số thứ tự 4.


Đầu vào: Dòng đầu gồm 2 số nguyên dương N và K. Dòng thứ 2 gồm K số mô tả tố hợp đã cho. Dữ liệu đảm bảo tố hợp đã cho là hợp lệ.


Ràng buộc: 1<=K<=N<=15


Đầu ra: In ra số thứ tự của tố hợp


Input:
12 4
8 9 10 11
Output:
5

Sinh tổ hợp chập K của N theo thứ tự ngược (thuật toán sinh - phương pháp sinh)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho N và K là các số nguyên (K <= N). Hãy sinh ra tổ hợp chập K của N theo thứ tự ngược


Ràng buộc: 1 <= K <= N <= 15


Input:
5 3
Output:
345
245
235
234
145
135
134
125
124
123

Xếp vị trí (thuật toán sinh - phương pháp sinh - sinh hoán vị)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho N bạn học sinh, giáo viên muốn xếp các bạn học sinh này vào một hàng ngang gồm N chiếc ghế. Nhiệm vụ của bạn là liệt kê các cách sắp xếp N bạn học sinh này theo thứ tự tên người tăng dần về thứ tự từ điển.


Đầu vào: Dòng đầu tiên là số N. Dòng thứ 2 là N tên học sinh, mỗi tên chỉ bao gồm một từ.


Ràng buộc: 1<=N<=10


Đầu ra: In ra các cách xếp trên từng dòng.


Input:
3
Lan Ngoc Nhung
Output:
Lan Ngoc Nhung
Lan Nhung Ngoc
Ngoc Lan Nhung
Ngoc Nhung Lan
Nhung Lan Ngoc
Nhung Ngoc Lan

Sinh hoán vị ngược (sinh hoán vị - phương pháp sinh)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Nhập vào N là số nguyên, hãy sinh ra các hoán vị NGƯỢC từ 1 đến N


Ràng buộc: N <= 8


Input:
3
Output:
3 2 1 
3 1 2 
2 3 1 
2 1 3 
1 3 2 
1 2 3

Bài toán N quân hậu 1 (quay lui, quay lui - nhánh cận)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho một bàn cờ vua có kích thước N * N. Hãy đếm xem có bao nhiêu cách xếp các quân hậu lên bàn cờ để chúng không ăn nhau?


Đầu vào: Số nguyên N


Ràng buộc: 2 <= N <= 12


Đầu ra: In ra số lượng cách xếp các quân hậu


Input:
8
Output:
92