Một mảng hai chiều có kích thước n × n được lấp đầy bằng các số n * n, bắt đầu từ số 1. Các số đó sẽ được sắp xếp trên mỗi hàng theo thứ tự tăng dần; số đầu tiên của một hàng phải lớn hơn số cuối cùng của hàng trước đó (số nhỏ nhất của tất cả (1) sẽ nằm trong [0,0]). Điều này tương tự như 15 câu đố .
Đây là, ví dụ, một mảng được sắp xếp có kích thước n = 3 .
1 2 3
4 5 6
7 8 9
Đầu vào
Đầu vào là một mảng được xáo trộn. Nó có thể có kích thước bất kỳ lên tới n = 10. Ví dụ cho n = 3:
4 2 3
1 8 5
7 9 6
Đầu ra
Xuất ra một danh sách các giao dịch hoán đổi cần thiết để sắp xếp mảng. Một trao đổi được định nghĩa như sau: Hai vị trí hoán đổi số liền kề , theo chiều ngang hoặc chiều dọc; hoán đổi đường chéo là không được phép.
Ví dụ đầu ra cho ví dụ trên:
- Hoán đổi 4 và 1
- Hoán đổi 8 và 5
- Hoán đổi 8 và 6
- Hoán đổi 9 và 8
Càng ít giao dịch hoán đổi, càng tốt. Thời gian tính toán phải khả thi.
Đây là một ví dụ đầu vào khác, với n = 10:
41 88 35 34 76 44 66 36 58 28
6 71 24 89 1 49 9 14 74 2
80 31 95 62 81 63 5 40 29 39
17 86 47 59 67 18 42 61 53 100
73 30 43 12 99 51 54 68 98 85
13 46 57 96 70 20 82 97 22 8
10 69 50 65 83 32 93 45 78 92
56 16 27 55 84 15 38 19 75 72
33 11 94 48 4 79 87 90 25 37
77 26 3 52 60 64 91 21 23 7
Nếu tôi không nhầm, điều này sẽ cần khoảng 1000-2000 giao dịch hoán đổi.