Двовимірний масив розміром n × n заповнюється n * n числами, починаючи з числа 1. Ці числа слід сортувати за рядом у порядку зростання; перше число рядка має бути більшим за останнє число попереднього рядка (найменше число всіх (1) буде у [0,0]). Це схоже на 15 головоломок .
Це, наприклад, відсортований масив розміром n = 3 .
1 2 3
4 5 6
7 8 9
Вхідні дані
Вхід - це скреммований масив. Він може бути будь-якого розміру до n = 10. Приклад для n = 3:
4 2 3
1 8 5
7 9 6
Вихідні дані
Виведіть список свопів, необхідних для сортування масиву. Своп визначається наступним чином : Два суміжних номери міняються місцями, або по горизонталі або по вертикалі; діагональна заміна не дозволяється.
Приклад виведення для прикладу вище:
- Поміняйте 4 і 1
- Зміна 8 і 5
- Зміна 8 і 6
- Поміняйте місцями 9 і 8
Чим менше потрібних свопів, тим краще. Час обчислення повинен бути здійсненним.
Ось ще один приклад введення з 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
Якщо я не помиляюся, для цього знадобиться близько 1000-2000 свопів.