资源简介
用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图片浏览器跨平台运行程序与源码
- 基于java的在线考试系统-毕业设计
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
评论
共有 条评论