QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 2048 MB Total points: 100

#2932. 跳棋滑动

Statistics

Checker Slide 是一个在棋盘上移动跳棋的益智游戏。在本题中,我们将在一个 $6 \times 6$ 的棋盘上使用 4 枚跳棋。一次移动是指选择其中一枚跳棋,并将其向左、向右、向上或向下移动,直到它碰到棋盘边缘或另一枚跳棋为止。游戏的目的是找到一个移动序列,从给定的初始状态到达给定的目标状态。

一些示例位置

例如,位置 1 可以通过将两枚靠下的跳棋向上移动(移动到靠上的跳棋正下方),然后将右侧的跳棋向左移动,从而变为位置 2。

注意,位置 3 不能作为任何(非空)移动序列的结束位置,因为此时没有任何跳棋与棋盘边缘或其他跳棋相邻。

将位置 1 移动到位置 4 的一种方法如下所示:

编写一个程序,求出从给定的初始位置到达给定的目标位置所需的最少移动步数 $N$。对于本题,保证每个测试用例至少存在一个解。

输入格式

输入包含两行。每行包含八个由空格分隔的十进制整数。这些数值($0 \le \text{value} \le 5$)给出了四枚跳棋在棋盘上的行和列坐标($\text{ROW1 COLUMN1 ROW2 COLUMN2 ROW3 COLUMN3 ROW4 COLUMN4}$)。第一行给出初始位置,第二行给出每枚跳棋的目标位置。

输出格式

输出的第一行包含一个十进制整数 $N$,表示解决该问题所需的最少步数。接下来是 $N$ 行,每行描述下一步的跳棋移动。每行应包含四个由空格分隔的十进制整数,分别表示被移动跳棋的起始行、起始列、结束行和结束列。

样例

样例输入 1

5 5 5 0 0 5 0 0
2 2 2 1 1 2 1 1

样例输出 1

12
5 0 1 0
0 5 4 5
0 0 0 5
4 5 1 5
5 5 2 5
1 5 1 1
0 5 1 5
1 5 1 2
1 1 5 1
1 0 1 1
5 1 2 1
2 5 2 2

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.