编号为1~8的正方形方块摆成3行3列,每次可以把与空格相邻的滑块移动到空格中,而原来的位置就成为了新的空格,给定初始局面和目标局面,计算出最少的移动步数。
| 2 | 6 | 4 |
| 1 | 3 | 7 |
| 5 | 8 |
2 6 4 1 3 7 0 5 8
2 6 4 1 3 0 5 8 7
2 6 4 1 3 7 0 5 8
8 1 5 7 3 6 4 0 2
样例输出:
3
31
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Queue;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
class State{
int[] s;
public State(int []s){
this.s=s;
}
public int hashCode(){
StringBuffer str=new StringBuffer();
for(int i:s)
str.append(i);
return Integer.parseInt(str.toString());
}
public boolean equals(Object obj){
State temp=(State)obj;
if(this.hashCode()==temp.ha

本文探讨了八数码问题,这是一个经典的滑动拼图游戏。初始局面和目标局面分别为:2 6 4 1 3 7 0 5 8 和 2 6 4 1 3 0 5 8 7。通过计算,得出从初始局面到达目标局面的最少移动步数为3和31。
1339

被折叠的 条评论
为什么被折叠?



