Trong toán học, hoán vị σ của thứ tự n là một hàm tính toán từ các số nguyên 1 ... n sang chính nó. Danh sách này:
2 1 4 3
đại diện cho hoán vị σ sao cho σ (1) = 2, σ (2) = 1, σ (3) = 4 và σ (4) = 3.
Một căn bậc hai của một hoán vị σ là một hoán vị rằng, khi áp dụng cho bản thân, cho σ . Ví dụ, 2 1 4 3
có căn bậc hai τ = 3 4 2 1
.
k 1 2 3 4
τ(k) 3 4 2 1
τ(τ(k)) 2 1 4 3
vì τ ( τ (k)) = σ (k) cho tất cả 1≤k≤n.
Đầu vào
Một danh sách gồm n > 0 số nguyên, bao gồm từ 1 đến n , bao gồm một hoán vị. Hoán vị sẽ luôn có một căn bậc hai.
Bạn có thể sử dụng danh sách 0 ... n-1 thay vì miễn là đầu vào và đầu ra của bạn nhất quán.
Đầu ra
Căn bậc hai của hoán vị, cũng như một mảng.
Hạn chế
Thuật toán của bạn phải chạy trong thời gian đa thức trong n . Điều đó có nghĩa là bạn không thể lặp qua tất cả n ! hoán vị của n .
Bất kỳ nội dung được cho phép.
Các trường hợp thử nghiệm:
Lưu ý rằng nhiều đầu vào có nhiều đầu ra có thể.
2 1 4 3
3 4 2 1
1
1
3 1 2
2 3 1
8 3 9 1 5 4 10 13 2 12 6 11 7
12 9 2 10 5 7 4 11 3 1 13 8 6
13 7 12 8 10 2 3 11 1 4 5 6 9
9 8 5 2 12 4 11 7 13 6 3 10 1