Description
介绍一个简单游戏—“三数码”,这个游戏玩法与八数码和十五数码的玩法一模一样,唯一不同的是,“三数码”是2*2的,如下:
游戏开始时,1,2,3被随机的放到四个格子中,0表示该格子没有数字。然后你要做的就是把此布局移动到此
目标局面。
Input
首先是一个整数T(T<=24),接下来有T组测试数据。
每组数据包括四个整数,占两行,表示棋盘的初始布局。
Output
对于每组测试数据,如果可以移动到目标局面则输出YES,否则输出NO。
Sample Input 1
3
1 2
3 0
2 0
3 1
2 3
0 1
Sample Output 1
YES
NO
YES
思路
因为图片无法看到,只能根据测试数据来寻找规律
无论将两个正确答案如何移动,最终都是顺时针方向下,去掉零后,都能构成123的数列
因此只需要将所有情况一一列举出来便能解决问题
代码
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while (n--) {
int a, b, c, d;
cin >> a >> b >> d >> c;
if ((a == 1 && b == 2) || (a == 1 && c == 2&&d==3))
cout << "YES" << endl;
else if ((b == 1 && c == 2) || (b == 1 && d == 2&&a==3))
cout << "YES" << endl;
else if ((c == 1 && d == 2) || (c == 1 && a == 2&&b==3))
cout << "YES" << endl;
else if ((d == 1 && a == 2) || (d == 1 && b == 2&&c==3))
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}