2524: 八数码
Memory Limit:128 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:17
Solved:9
Description
题解——八数码
题目
题目描述
在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。
Input
输入初始状态,一行九个数字,空格用0表示
123740865
1 2 3
7 4 0
8 6 5
123740865
1 2 3
7 4 0
8 6 5
Output
只有一行,该行只有一个数字,表示从初始状态到目标状态需要的最少移动次数(测试数据中无特殊无法到达目标状态数据)
Sample Input Copy
283104765
Sample Output Copy
4
HINT
那么这个题主要的思维难度在于如何设计状态,很多人都会想到用一个3*3的数组来模拟这个9宫格,但是实际上是不可行的,因为我们没有办法去表示这个状态下与初始状态的移动步数(也许可以用哈希表,但博主不会)那么如何来设计我们的状态呢?其实题目给了我们提示:用一个9位数来表示这个并状态,与数组上上的位置一一对应。举个例子:
123740865 1 2 3 7 4 0 8 6 5