#Z01530. 15数码问题

15数码问题

题目描述

在一个 4x4 的网格中,1∼15 这 15 个数字和一个 x 恰好不重不漏地分布在这 4×4 的网格中,10~15分别用A,B,C,D,E,F表示

例如:

1 2 3 4 5 6 7 8 9 A B x D E F C 在游戏过程中,可以把 x 与其相邻的上、下、左、右四个方向之一的格子进行交换(如果存在),交换顺序的方向按照上、下、左、右进行交换。

我们的目的是通过交换,使得网格变为如下排列(称为正确排列): 1 2 3 4 1 2 3 4 5 6 7 8 5 6 7 8 9 A B x 9 A B C D E F C D E F x 例如,示例中图形就可以通过 x 与C(下方向)交换得到正确排列。

把 x 与上下左右方向数字交换的行动记录为 u、d、l、r。

现在,给你一个初始网格,请你通过最少的移动次数,在18步之内(包括18步),得到正确排列。

输入格式

输入有多组,将 4×4 的初始网格描绘出来。

例如,如果初始网格如下所示:

1 2 3 4 5 6 7 8 9 A B x D E F C

则输入为:1 2 3 4 5 6 7 8 9 A B x D E F C

输出格式

输出占一行,包含一个字符串,表示得到正确排列的完整行动记录。

如果步数超过18步,则输出 unsolvable。

1 2 3 4
5 6 7 8
9 A B x
D E F C
d

提示

方向必须严格按照上下左右走