描述
现有一两行三列的表格如下:
A B C
D E F
把 1、2、3、4、5、6 六个数字分别填入 A、B、C、D、E、F 格子中,每个格子一
个数字且各不相同。每种不同的填法称为一种布局。如下
1 3 5
2 4 6
布局 1
2 5 6
4 3 1
布局 2
定义 α 变换如下:把 A 格中的数字放入 B 格,把 B 格中的数字放入 E 格,把 E
格中的数字放入 D 格,把 D 格中的数字放入 A 格。
定义 β 变换如下:把 B 格中的数字放入 C 格,把 C 格中的数字放入 F 格,把 F
格中的数字放入 E 格,把 E 格中的数字放入 B 格。
问:对于给定的布局,可否通过有限次的α 变换和β 变换变成下面的目标布局:
1 2 3
4 5 6
输入
本题有多个测例,第一行为输入测例的个数 n,下面是 n 行测例,每个测例的输
入是 1 到 6 这六个数字的一个排列,空格隔开,表示初始布局 ABCDEF 格中依次
填入的数字。
输出
每个输出占一行。输出转换到目标格局需要变换的最少次数。(若不能转换则输
出-1)
输入样例
2
2 5 3 1 4 6
2 3 6 1 5 4
输出样例
1
2
提示
注意不能转换到目标格局的情况应输出-1;
输出格式为:printf(“%d\n”,min);
#include <cstdio>
#include <queue>
using namespace std;
const int maxn = 50;
int n;//有几个输入
int ans[maxn] = {0};//保存最终数据的次数
int used[654322] = {0};//判重数组
struct node
{
int table[6];
int num;
int sum = 0;
}Node;
queue<node> q;
int setnum(node temp)