资源简介
用JAVA写的A*算法实现八数码问题,能运行。
代码片段和文件信息
public class Eight{
int g;
int e[][]={{283}{164}{705}};
int zizj; //0的位置
Eight former;
public Eight()
{
g=0;
zi=-1;
zj=-1;
former=null;
}
public Eight(Eight other){
for(int i = 0; i<3; i++)
for(int j=0 ;j<3; j++){
e[i][j] = other.e[i][j];
}
zi=other.zi;
zj=other.zj;
former=other.former;
}
public void setFormer(Eight e){
this.former=e;
}
public void listAll( Eight e ){
System.out.println(“最优路径为:“);
List l=new List();
l.insertAtFront(e);
while( e.former != null ){
l.insertAtFront(e.former);
e = new Eight(e.former);
}
while(!l.isEmpty()){
e=l.getFirstNode();
e.print();
l.removeFromFront();
}
return ;
}
public boolean equals(Eight a)
{
int i=0;
int j=0;
if(a==null)
return false;
else {
for( i = 0; i<3; i++)
for(j=0;j<3; j++){
if(a.e[i][j] != this.e[i][j])
return false;
}
return true;
}
}
public void Swap(int iint jint mint n){
int temp;
temp = this.e[i][j];
this.e[i][j] = this.e[m][n];
this.e[m][n] = temp;
}
public int h(){
int dest[][] = {{123}{804}{765}};
int h =0ij;
for(i=0;i<3;i++)
for(j=0;j<3;j++){
if(this.e[i][j]!=dest[i][j] && e[i][j]!=0)
h++;
}
return h;
}
public int f(){
return g+h();
}
public Eight[] ex(){
List e =new List();
int i=0j=0k=0;
int mn;
boolean flag = true;
for(i=0;i<3&&flag;i++)
for(j=0;j<3&&flag;j++){
if(this.e[i][j]==0){
flag=false;
break;
}
}
i=i-1;
if(i-1>=0){
Eight a=new Eight(this);
m=i-1;
a.Swap(mjij);
e.insertAtBack(a);
++k;
}
if(i+1<3){
Eight a=new Eight(this);
m=i+1;
a.Swap(mjij);
e.insertAtBack(a);
++k;
}
if(j-1>=0){
Eight a=new Eight(this);
n=j-1;
a.Swap(inij);
e.insertAtBack(a);
++k;
}
if(j+1<3){
Eight a=new Eight(this);
n=j+1;
a.Swap(inij);
e.insertAtBack(a);
++k;
}
Eight b[]=new Eight[k];
for(int x=0;x b[x]=e.getFirstNode();
b[x].setFormer(this);
b[x].g=this.g+1;
e.removeFromFront();
}
return b;
}
static void sort(Eight a[]){
Eight temp;
for(int i=0;i for(int j=a.length-1;j>i;j--){
if(a[j].f() temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
}
}
}
static void listSort(List l){
Eight a[]=new Eight[l.length];
for(int i=0;i a[i]=l.getFirstNode();
l.removeFromFront();
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4402 2008-12-07 16:56 EightNum\Eight.java
文件 3773 2008-12-07 15:53 EightNum\List.java
目录 0 2008-12-15 21:40 EightNum
----------- --------- ---------- ----- ----
8175 3
相关资源
- Java简单计算器Swing版
- java-根据网站链接url生成二维码qrcod
- 基于Java的坦克大战游戏含代码和报告
- voiipui开发设计详细
- java 简易计算器的实现
- uc浏览器java手机版UC8.6 java通用版本
- 打砖块JAVA游戏代码
- beiyou Java作业 -3
- java图片浏览器
- 在线拍照Java代码实现
- JAVA分数计算器
- 简单的RSA算法的实现
- JAVA实现BGN同态加密算法
- java httpclient 模拟登录
- 磁盘调度算法java实现
- java实现推荐系统源码
- javaweb开发:通过对jsp和servlet的学习做
- java吃豆子游戏程序
- Java实现计算器,带界面
- JAVA版的JS代码加密器
- 三角质心定位_java算法实现
- java五子棋以及毕业论文
- 纯java实现最简单的本地考试管理系统
- java单机斗地主完善版
- 自己用java做的数字拼图游戏
- java实现学生类、教师类继承同一个父
- java实现基于UDP协议的简单聊天室,带
- 简易计算器Java Swing实现
- 满天星星java源程序
- Java面向对象程序设计(源代码)
评论
共有 条评论