问题 4251 --回形方阵

4251: 回形方阵

题目描述

  一个n×n的矩阵,可以分成一些环(如图a中,n=5,可以划分成3个环),每个环上的数字都可以沿着环顺时针或者逆时针转动,每次转动只能将任意一个环顺时针或者逆时针转动一格。初始状态如图a,将矩阵从左到右、从上到下依次用1到n×n填满。现在给你一个局面,请问至少通过多少次环的转动能使矩阵恢复到初始状态?
例如,图b的局面可以通过,最外圈逆时针转动两格,第二圈顺时针转动一格,恢复到初始状态(图a),即至少转动三次。

输入

第一行输入一个正整数n。接下来n行,每行输入n个用空格隔开的正整数,第i行第j个数aij(aij≤1,000),表示给定的n×n的矩阵局面。

输出

若给定的矩阵局面可以通过环的转动回到初始状态,则输出两行,第一行为“YES”(输出不包含引号),第二行为一个非负整数,表示至少需要转动几次;否则,输出“NO”(输出不包含引号)。

样例输入输出

输入#1 复制
5
11 6 1 2 3
16 8 9 14 4
21 7 13 19 5
22 12 17 18 10
23 24 25 20 15
输出#1 复制
YES
3
输入#2 复制
4
1 2 3 4
5 6 7 8
9 9 11 12
13 14 15 16
输出#2 复制
NO

提示

数据范围:
对于 40% 的数据,满足n≤4,且给定局面中1到n×n的数字都出现且仅出现一次;
对于 80% 的数据,满足n≤6,且给定局面中1到n×n的数字都出现且仅出现一次;
对于 100% 的数据,满足n≤6。

序号 标题 作者 发表时间 费用 订购数 操作