nxn 크기의 2 차원 배열은 숫자 1부터 n * n 숫자로 채워집니다.이 숫자는 행당 오름차순으로 정렬됩니다. 행의 첫 번째 숫자는 이전 행의 마지막 숫자보다 커야합니다 (모두 가장 작은 숫자는 [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 스왑이 필요합니다.