题目
原题传送门
由于某种不可告人的原因,没法复制原题,一复制就说我非原创……
哎╮(╯▽╰)╭
思路
诶,和八数码好像!
这题那么多人过!
b
f
s
bfs
bfs大法好!
轻松bfs水过
由于限制为
120
120
120步,完美超时。
想来想去,又用了
A
∗
A*
A∗搜索。
嘿嘿嘿,好像没得问题
轻松A*水过
再次因为
120
120
120步,完美超时。
120步这个老东西。
于是,万般无奈,试了试纯判断
Y
e
s
Yes
Yes和
N
o
No
No。
15宫格,是个奇数。
那么我们累加每个数的逆序对数目,加上0到终态的曼哈顿距离,奇数则有解,偶数无解。
不可能过的
过了……
好吧, 120 120 120步是迷惑人的。
一个 15 15 15数码问题,最多走 80 80 80步,不需要想 120 120 120步。 来自:
沃茨基dls晚上讲题。
好吧,上代码。
代码
#include <bits/stdc++.h>
using namespace std;
int a[101010];
int main() {
int T; scanf("%d", &T);
while (T--) {
int ans = 0;
for (int i = 0; i < 16; i++) {
scanf("%d", &a[i]);
if (!a[i]) ans += 6 - i/4 - i%4;
for (int j = 0; j < i; j++)
if (a[j] > a[i]) ans++;
}
if (ans & 1) puts("Yes");
else puts("No");
}
return 0;
}