问题描述
给定两个
�
×
�
H×W 的矩阵
�
A 和
�
B。
你每次可以交换矩阵
�
A 的相邻两行中的所有元素或是交换两列中的所有元素。
请问要使
�
A 变换至
�
B 至少需要几步操作?
如果无法变换至
�
B,则输出 -1。
约束条件
所有输入值均为整数。
2
≤
�
,
�
≤
5
2≤H,W≤5
1
≤
�
�
,
�
,
�
�
,
�
≤
1
0
9
1≤A
i,j
,B
i,j
≤10
9
输入
输入以以下格式从标准输入给出:
�
H
�
W
�
1
,
1
A
1,1
�
1
,
2
A
1,2
⋯
⋯
�
1
,
�
A
1,W
�
2
,
1
A
2,1
�
2
,
2
A
2,2
⋯
⋯
�
2
,
�
A
2,W
⋮
⋮
�
�
,
1
A
H,1
�
�
,
2
A
H,2
⋯
⋯
�
�
,
�
A
H,W
�
1
,
1
B
1,1
�
1
,
2
B
1,2
⋯
⋯
�
1
,
�
B
1,W
�
2
,
1
B
2,1
�
2
,
2
B
2,2
⋯
⋯
�
2
,
�
B
2,W
⋮
⋮
�
�
,
1
B
H,1
�
�
,
2
B
H,2
⋯
⋯
�
�
,
�
B
H,W
输出
如果无法使网格 A 变为与网格 B 相同,则输出 -1。否则,输出使网格 A 变为与网格 B 相同所需的最小操作次数。
示例 1
Inputcopy Outputcopy
4 5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
1 3 2 5 4
11 13 12 15 14
6 8 7 10 9
16 18 17 20 19
3
交换初始网格 A 的第四和第五列得到以下网格:
1 2 3 5 4
6 7 8 10 9
11 12 13 15 14
16 17 18 20 19
然后,交换第二和第三行得到以下网格:
1 2 3 5 4
11 12 13 15 14
6 7 8 10 9
16 17 18 20 19
最后,交换第二和第三列得到以下网格,与网格 B 相同:
1 3 2 5 4
11 13 12 15 14
6 8 7 10 9
16 18 17 20 19
通过上述三次操作,你可以使网格 A 与网格 B 相同,且不能用更少的操作次数,因此输出
3
3。
示例 2
Inputcopy Outputcopy
2 2
1 1
1 1
1 1
1 1000000000
-1
无法通过操作使网格 A 与网格 B 相同,因此输出 -1。
示例 3
Inputcopy Outputcopy
3 3
8 1 6
3 5 7
4 9 2
8 1 6
3 5 7
4 9 2
0
初始时,网格 A 已经与网格 B 相同。
示例 4
Inputcopy Outputcopy
5 5
710511029 136397527 763027379 644706927 447672230
979861204 57882493 442931589 951053644 152300688
43971370 126515475 962139996 541282303 834022578
312523039 506696497 664922712 414720753 304621362
325269832 191410838 286751784 732741849 806602693
806602693 732741849 286751784 191410838 325269832
304621362 414720753 664922712 506696497 312523039
834022578 541282303 962139996 126515475 43971370
152300688 951053644 442931589 57882493 979861204
447672230 644706927 763027379 136397527 710511029
20
Sponsor
谢谢,QaQ