重排九宫问题(用java实现)

来源:百度知道 编辑:UC知道 时间:2024/06/13 21:43:14
就是把像
2 8 3
1 4
7 6 5
这样的通过一步步的变换最终变为
1 2 3
8 4
7 6 5
要有中间的变换过程输出

必须用java语言实现(最好能有A*,广度优先等好几种算法)

我邮箱risiukucc@126.com

import java.util.Arrays;
public class NineGridTest{
public static void main(String[] args){
//三行数据依次排列9个元素构造实例,空位填0,调用go方法获取答案。
NineGrid example=new NineGrid(new int[]{1,6,5,3,0,2,7,8,4});
int[] answer=example.go();
if(answer==null){
System.out.println("没有找到步骤");
}
else{
for(int i=0;i<answer.length;i++){
System.out.print(answer[i]);
}
System.out.println();
}
}
}
class NineGrid{
private static final int MAX_STEP=50;
private static final int[] right=new int[]{1,2,3,8,0,4,7,6,5};
private int vacant,length;
private int[] grids,answer;
public NineGrid(int[] grids){
if(grids.length!=9){
throw new IllegalArgumentException(String.format("缺少数据:%1$d(%2$d)",grids.length,9));
}
int i,j;
for(i=8;i>=0;i--){
for(j=0;j<9;j++){
if(grids[j]==i){
break;
}