⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiugongtu.java

📁 本程序代码是人工智能中九宫搜索的解决 采用Java语言
💻 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 + -