Sinh hoán vị
Liệt Kê Hoán Vị
Nộp bàiPoint: 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àiPoint: 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àiPoint: 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àiPoint: 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àiPoint: 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àiPoint: 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àiPoint: 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àiPoint: 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àiPoint: 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àiPoint: 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àiPoint: 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àiPoint: 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àiPoint: 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àiPoint: 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