📄 jiugongtu.java
字号:
/*
* Created on 2005-4-16
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author 汪永威
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class jiugongtu
{
Table open=new Table();
Table closed=new Table();
Table develop=new Table();
jiedian start=new jiedian();
jiedian end=new jiedian();
int n=0;
int step=0;
boolean succeed=true;
int stepmax=0;
int bddepth=100;
int dm=4;
int fang[]={-2,-1,1,2};
public void chushi()
{
open.chushi();
closed.chushi();
develop.chushi();
start.chushi();
end.chushi();
n=0;
step=0;
succeed=true;
stepmax=0;
bddepth=20;
dm=5;
fang[0]=-2;
fang[1]=-1;
fang[2]=1;
fang[3]=2;
}
public void setstart(int s[])
{
for(int i=0;i<9;i++)
{
start.fangge[i]=s[i];
if(s[i]==0)
start.locate=i;
}
start.direct=0;
start.ND=0;
start.nn=0;
start.calculatekeyvalue();
start.father=-1;
}
public void setend(int e[])
{
for(int i=0;i<9;i++)
{
end.fangge[i]=e[i];
if(e[i]==0)
end.locate=i;
}
end.direct=0;
end.ND=0;
end.nn=0;
end.calculatekeyvalue();
end.father=-1;
}
public void operate(int sort)
{
jiedian t=new jiedian();
jiedian m=new jiedian();
start.father=-1;
start.ND=0;
start.nn=0;
start.direct=0;
start.locate=4;
start.calculatekeyvalue();
open.addElement(start);
while(!open.isEmpty())
{
t=open.ElementAt(0).clon();// hghjkjk
t.calculatekeyvalue();
closed.addElement(t);
closed.ElementAt(step).calculatekeyvalue();
open.removeElementAt(0);
step++;
if(t.equal(end))
{
succeed=true;
return;
}
if(sort==1&&step>100000)
{
succeed=false;
return;
}
if(sort==1)
{ for(int p=0;p<4;p++)
{ boolean fla=false;
int mn=0;
while(!fla)
{
int q=0;
mn=((int)(Math.random()*100))%5-2;
for(q=0;q<p;q++)
{
if(fang[q]==mn||mn==0)
break;
continue;
}
if(q>=p) fla=true;
}
fang[p]=mn;
}
}
if(sort==2&&step>=dm)
continue;
develop.removeAllElements();
for(int i=0;i<4;i++)
{
if((fang[i]+t.direct)!=0&&fang[i]!=0)
{
if(fang[i]==-2&&t.locate>=3||fang[i]==2&&t.locate<6||fang[i]==-1&&t.locate%3!=0||fang[i]==1&&(t.locate+1)%3!=0)
{
m=t.movegrid(t.locate,fang[i]).clon();//hfiaogj
m.ND=t.ND+1;
m.calculatekeyvalue();
switch(sort)
{
case 0: open.addElement(m);
break;
case 1: open.insertElement(m,0);
break;
case 2: open.insertElement(m,0);
break;
case 3: open.smallorderinsert(m);
break;
case 4: develop.largeorderinsert(m);
break;
default: break;
}
}
}
}
if(sort==4)
{
while(!develop.isEmpty())
{
//m=develop.ElementAt(0).clon();//hjgkajg
open.insertElement(develop.ElementAt(0).clon(),0);
develop.removeElementAt(0);
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -