AT_past19_o.15パズル
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
称一个 4×4 的网格为好网格,当且仅当满足以下条件:
对于每个 1 到 15 之间的整数(包含 1 和 15),网格中恰好有一个格子写有该整数。
剩下的唯一一个格子没有写任何数。换句话说,恰好有且只有一个格子为空。
现给定两个不同的好网格 S 和 T。
这里,好网格 S 由 16 个整数 Si,j(1≤i,j≤4)给出。
如果 1≤Si,j≤15,则表示第 i 行第 j 列的格子上写着 Si,j;
如果 Si,j=−1,则表示第 i 行第 j 列的格子为空。
同理,T 也由 16 个整数 Ti,j(1≤i,j≤4)给出。
你需要计算,从 S 经过若干次如下操作,最少多少步能够变成 T。
如果用 30 次操作及以内(包括 30 次)无法变为 T(包括任意次数都无法变为 T 的情形),则输出 −1。
- 选择一个与空格相邻的格子,将该格子上的数移动到空格中,然后该格子变为空。
输入格式
输入为一行,从标准输入读取,格式如下:
S1,1 S1,2 S1,3 S1,4 S2,1 S2,2 S2,3 S2,4 S3,1 S3,2 S3,3 S3,4 S4,1 S4,2 S4,3 S4,4 T1,1 T1,2 T1,3 T1,4 T2,1 T2,2 T2,3 T2,4 T3,1 T3,2 T3,3 T3,4 T4,1 T4,2 T4,3 T4,4
输出格式
输出最少的操作次数,使得网格由 S 变为 T。
如果用 30 次操作以内无法变为 T,请输出 −1。
输入输出样例
输入#1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -1 1 2 3 4 5 6 -1 8 9 10 7 11 13 14 15 12
输出#1
3
输入#2
-1 11 10 9 1 12 15 8 2 13 14 7 3 4 5 6 6 5 4 3 7 12 15 2 8 13 14 1 9 10 11 -1
输出#2
-1
输入#3
1 12 11 10 2 13 -1 9 3 14 15 8 4 5 6 7 1 10 5 14 2 11 6 15 3 12 7 -1 4 13 8 9
输出#3
30
说明/提示
样例解释 1
记 (i,j) 表示网格中第 i 行第 j 列的格子。
在 S 中,空格位于 (4,4)。
可以通过以下三步操作将 S 变为 T:
- 选择 (3,4),将 12 移动到 (4,4),(3,4) 变为空;
- 选择 (3,3),将 11 移动到 (3,4),(3,3) 变为空;
- 选择 (2,3),将 7 移动到 (3,3),(2,3) 变为空。
另一方面,不能用两步或更少变为 T,因此输出 3。

样例解释 2
无法在 30 步以内变为 T,所以输出 −1。
数据范围
- −1≤Si,j,Ti,j≤15
- Si,j,Ti,j=0
- S 和 T 均为不同的好网格。
- 所有输入均为整数。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?