Tìm dãy hoán vị có số thứ tự từ điển lớn nhất

Cho số nguyên dương n và 1 dãy số a0,a1,a2,…a(n-1). In ra dãy được hoán vị có số thứ tự từ điển lớn nhất (quan sát từ trái sang phải) biết rằng: chỉ hai phần tử đứng cạnh nhau mới hoán vị được cho nhau và mỗi phần tử chỉ được hoán vị không quá 2 lần (<=2)
Ví dụ
INPUT
7
7 1 2 3 4 5 6
OUTPUT
7 3 4 1 2 6 5
P/s: Mọi người giúp em bài này với ạ. C++ ạ

i = 1:
[7 1 2] 3 4 5 6
cửa sổ i = 2:
7 [*3 1 2*] 4 5 6 mỗi phần tử in nghiêng đã swap 1 lần
cửa sổ i = 3:
7 *3* [*4* 1 2] 5 6 1, 2 đã swap hai lần
cửa sổ i = 6:
7 3 4 1 2 [*6 5*]

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?