亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? abt.java

?? 這是人工智能課的一個編程
?? JAVA
字號:
import java.util.*;
import java.io.*;
   
 class State//狀態圖的某一個結點
{
	//varibles
	 int numArray[][]=new int[3][3];
	 int LevelDepth;
	 Location zerol=new Location();
	 //
	 int f_value;//計算的f值的關系
	 State fatherS;//上層的狀態,記錄路徑
	 
	 //methods
   //計算g函數值
  public int g_fuc(State obj)
  {
   	return obj.LevelDepth+1;
  }
 
   //計算f函數值
   public int f_fuc(State goal)
   {
   	int dif_value=0;
   	int i,j;
   	for(i=0;i<3;i++)
   	  for(j=0;j<3;j++)
   	    if(numArray[i][j]!=goal.numArray[i][j])
   	      dif_value=dif_value+1;
   	      
   	 return dif_value;
   }
   
   public int caculate_f(State obj,State goal)
   {
   	  return g_fuc(obj)+f_fuc(goal);
  	}
  	
  	public void set_f(int value)
  	{
  		 f_value=value;
  	}
  		
    //狀態信息打印 
   public void print()
   {
   	  int i,j;
   	  
   	  System.out.println();
   	  for(i=0;i<3;i++)
	    	{
	    	  for(j=0;j<3;j++)
	    	    System.out.print(numArray[i][j]+" ");
	    	  System.out.println();
	    	}
	    	
	    	System.out.println("0的位置是:"+zerol.x+"  "+zerol.y);
	    	System.out.println("深度是: "+LevelDepth);
	    	System.out.println("f值的關系是:" +f_value);
	  }
   	  
   public State(int[][] node,int Depth,State father)//construction method
  {
  	int i,j;
  	for(i=0;i<3;i++)
  	  for(j=0;j<3;j++)
  	   {  if(node[i][j]==0)
  	    	{
  	    		zerol.x=i;
  	    		zerol.y=j;
  	    	}
  	    	numArray[i][j]=node[i][j];
  	    }
  	    
  	 LevelDepth=Depth;
  	 fatherS=father;
  }
  	    		 
  public boolean LeftMovable()//是否可將空格向上移動
	 {
	 	 if(zerol.y-1>=0)
	 	   return true;
	 	 else
	 	   return false;
	 	}
	 	
	 public	boolean RightMovable()//右移
	 	{
	 		if(zerol.y+1<3)
	 		   return true;
	 		else
	 		   return false;
	 	}
	 	
	  public boolean TopMovable()//上移
	 {
	 	 if(zerol.x-1>=0)
	 	   return true;
	 	 else
	 	   return false;
	 	}
	 	
	  public 	boolean DownMovable()//下移
	 	{
	 		if(zerol.x+1<3)
	 		   return true;
	 		else
	 		   return false;
	 	}
	 	
	  public boolean myequal(State obj)//狀態是否重復
	 {
	 	  int i,j;
	 	  for(i=0;i<3;i++)
	 	    for(j=0;j<3;j++)
	 	      if(numArray[i][j]!=obj.numArray[i][j])
	 	        return false;
	 	  return true;
	 }
	
}//end of state

 class Location//標志每個格局中0的位置
 {
   	 int x;
   	 int y;
   	public Location()//沒有返回值
    {
   	 	 x = -1;
   	 	 y = -1;
   	}
 }

class BreadthSearch
{
	 State startS;
	 State goalS;
	  
	 Vector openT = new Vector(10,1);
	 Vector closeT = new Vector(10,1);
	 Vector successP =new Vector(10,1);
	  
	  //methods
   public BreadthSearch(State start,State end)//construction  method
	  {
	    State test_s;
	    startS=start;
	    goalS=end;
	    
	    openT.addElement(startS);//開始結點放在可變數組中
     }
      
    public State inVector(Vector v ,State s)
     { 
      	int i;
      	for(i=0;i<v.size();i++)
      	  if(((State)(v.elementAt(i))).myequal(s))
      	    return (State)(v.elementAt(i));
      	return null;
      }
      	
	 public void expandNode(State s)//擴展一個結點
	  {
	    int num[][]=new int[3][3];
	    int depth,i,j;
	    int originValue;
	    Location loc_z=new Location();
	    State return_open,return_close;
	    int f_value;
	    
	  	//top expand
	  	if(s.LeftMovable())
	  	{
	  	  State s_new;
	  	  for(i=0;i<3;i++)
	  		  for(j=0;j<3;j++)
	  		    num[i][j]=s.numArray[i][j];
	  		    
	  		loc_z.x=s.zerol.x;
	  		loc_z.y=s.zerol.y-1;
	  		
	  	
	  		originValue=num[loc_z.x][loc_z.y];
	  		num[loc_z.x][loc_z.y]=0;
	  		num[loc_z.x][loc_z.y+1]=originValue;
	  	
	  		depth = s.LevelDepth + 1 ;
	  		s_new=new State(num,depth,s);
	  		
	 		//計算其f_value值,并且加入到s_new中
	   	    f_value=s_new.caculate_f(s,goalS);
	   	    
	  	    return_open=inVector(openT,s_new);
	  	    return_close=inVector(closeT,s_new);
	  	    
	  	    if(return_close==null&&return_open==null)//沒有在open表或是在close表中出現的
	  	    {
	  	    	  s_new.set_f(f_value);
	  	        openT.addElement(s_new);
	  	     }
	  	    else if(return_close!=null)
	  	    {
	  	    	if(f_value<return_close.f_value)
	  	    	{
	  	    		 closeT.removeElement(return_close);
	  	    	   return_close.set_f(f_value);
	  	    	   return_close.fatherS=s;
	  	    	   openT.addElement(return_close);
	  	      }
	  	     } else if(return_open!=null)
	  	     {
	  	     	 if(f_value<return_open.f_value)
	  	     	 {
	  	     	 	 return_open.set_f(f_value);
	  	     	 	 return_open.fatherS=s;
	  	     	 	}
	  	     	}
	  	     	 	 
	    }//end of if top expand
	  		
	 	//down expand
	 	if(s.RightMovable())
	   {
	  	  State s_new;
	  	  for(i=0;i<3;i++)
	  		  for(j=0;j<3;j++)
	  		    num[i][j]=s.numArray[i][j];
	  		    
	  		loc_z.x=s.zerol.x;
	  		loc_z.y=s.zerol.y+1;
	  		
	  		originValue=num[loc_z.x][loc_z.y];
	  		num[loc_z.x][loc_z.y]=0;
	  		num[loc_z.x][loc_z.y-1]=originValue;
	  	
	  		depth = s.LevelDepth + 1 ;
	  		s_new=new State(num,depth,s);
	  		
	  		  
	  	    f_value=s_new.caculate_f(s,goalS);
	  	    return_open=inVector(openT,s_new);
	  	    return_close=inVector(closeT,s_new);
	  	    
	  	    if(return_close==null&&return_open==null)//沒有在open表或是在close表中出現的
	  	    {
	  	    	  s_new.set_f(f_value);
	  	        openT.addElement(s_new);
	  	     }
	  	    else if(return_close!=null)
	  	    {
	  	    	if(f_value<return_close.f_value)
	  	    	{
	  	    		 closeT.removeElement(return_close);
	  	    	   return_close.set_f(f_value);
	  	    	   return_close.fatherS=s;
	  	    	   openT.addElement(return_close);
	  	   	  }
	  	     } else if(return_open!=null)
	  	     {
	  	     	 if(f_value<return_open.f_value)
	  	     	 {
	  	     	 	 return_open.set_f(f_value);
	  	     	 	 return_open.fatherS=s;
	  	     	 	}
	  	     	}
	  	}//end of if down expand
	  		
	  	//left expand
	  	if(s.TopMovable())
	   {
	  	  State s_new;
	  	  for(i=0;i<3;i++)
	  		  for(j=0;j<3;j++)
	  		    num[i][j]=s.numArray[i][j];
	  		    
	  		loc_z.x=s.zerol.x-1;
	  		loc_z.y=s.zerol.y;
	  		
	  		originValue=num[loc_z.x][loc_z.y];
	  		num[loc_z.x][loc_z.y]=0;
	  		num[loc_z.x+1][loc_z.y]=originValue;
	  	
	  		depth = s.LevelDepth + 1 ;
	  		s_new=new State(num,depth,s);
	  		
	  		  
	  	    f_value=s_new.caculate_f(s,goalS);
	  	    return_open=inVector(openT,s_new);
	  	    return_close=inVector(closeT,s_new);
	  	    
	  	    if(return_close==null&&return_open==null)//沒有在open表或是在close表中出現的
	  	    {
	  	    	  s_new.set_f(f_value);
	  	        openT.addElement(s_new);
	  	     }
	  	    else if(return_close!=null)
	  	    {
	  	    	if(f_value<return_close.f_value)
	  	    	{
	  	    		closeT.removeElement(return_close);
	  	    	   return_close.set_f(f_value);
	  	    	   return_close.fatherS=s;
	  	    	   openT.addElement(return_close);
	  	      }
	  	     } else if(return_open!=null)
	  	     {
	  	     	 if(f_value<return_open.f_value)
	  	     	 {
	  	     	 	 return_open.set_f(f_value);
	  	     	 	 return_open.fatherS=s;
	  	     	 	}
	  	     	}
	 	  }//end of if left expand
	  		
	     	//right expand
	  	if(s.DownMovable())
	   {
	  	  State s_new;
	  	  for(i=0;i<3;i++)
	  		  for(j=0;j<3;j++)
	  		    num[i][j]=s.numArray[i][j];
	  		    
	  		loc_z.x=s.zerol.x+1;
	  		loc_z.y=s.zerol.y;
	  		
	  		originValue=num[loc_z.x][loc_z.y];
	  		num[loc_z.x][loc_z.y]=0;
	  		num[loc_z.x-1][loc_z.y]=originValue;
	  	
	  		depth = s.LevelDepth + 1 ;
	  		s_new=new State(num,depth,s);
	  		
	  		  
	  	    f_value=s_new.caculate_f(s,goalS);
	  	    return_open=inVector(openT,s_new);
	  	    return_close=inVector(closeT,s_new);
	  	    
	  	    if(return_close==null&&return_open==null)//沒有在open表或是在close表中出現的
	  	    {
	  	    	  s_new.set_f(f_value);
	  	        openT.addElement(s_new);
	  	     }
	  	    else if(return_close!=null)
	  	    {
	  	    	if(f_value<return_close.f_value)
	  	    	{
	  	    		 closeT.removeElement(return_close);
	  	    	   return_close.set_f(f_value);
	  	    	   return_close.fatherS=s;
	  	    	   openT.addElement(return_close);
	  	      }
	  	    } else if( return_open!=null)
	  	     {
	  	     	 if(f_value< return_open.f_value)
	  	     	 {
	  	     	 	 return_open.set_f(f_value);
	  	     	 	 return_open.fatherS=s;
	  	     	 	}
	  	     	}
	 	}//end of if right expand
	  		
	 }//end of expanding process
	 
	 public int getMinInOpen()
	 {
	 	 State temp;
	 	 int i;
	   int i_value=55555,flag=0;
	   for(i=openT.size()-1;i>=0;i--)
	   {
	   	 temp=(State)(openT.elementAt(i));
	     if(temp.f_value<i_value)
	      {
	      	flag = i;
	      	i_value = temp.f_value;
	      }
	    }
	   return flag;
	  }
	     
	     
public boolean SearchSuccess()
	 {
	  	 State s_first;
	  	 State pathState;
	  	 int flag_min;
	  
 	   while(!openT.isEmpty())
	    {
	     //計算其最小應該提取的元素
	    	flag_min=getMinInOpen();
	    	s_first=(State)(openT.elementAt(flag_min));//取open表中的第一個結點
	    	openT.removeElementAt(flag_min);
	    	closeT.addElement(s_first);
	    	
	    	if(s_first.LevelDepth>2000)//人為的界定一個界限防止無解和解路徑很長的情況
	    	    return false;
	    	    
	    	if(s_first.myequal(goalS))//如果是目標結點的話,停止搜索
	     	 {
	      	 pathState=s_first;
	      	 System.out.println("\n結果如下:\n");
	       	 while(!pathState.myequal(startS))
	      	 {
	      		successP.addElement(pathState);
	      		pathState=pathState.fatherS;
	       	 }//end of while
	      	
	      	if(pathState!=null)//排除目標狀態和初始狀態相同的情況
	      	   successP.addElement(pathState);
	      	return true;
	      }//end of if ,success 將路徑加入到successPath中
	    
	     expandNode(s_first);
	    }//end of while
    return false;//not found
	    
 }//end of Search
 
 
 public void getResult()//輸出具體的路徑
 {
 	 State s_temp;
 	 int i;
 	 System.out.print("計算過程 :");
 	 for(i=successP.size()-1;i>=0;i--)
 	 {
 	 	    s_temp = (State)successP.elementAt(i);
 	 	    s_temp.print();
 	 	    System.out.println();
 	 	    System.out.println();
 	 }
 } //end of getResult
}

public class ABT
{
	public static void ReadFormSI(int[][] a)
	{
		int i,j;
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		
		try
		{
			for(i=0;i<3;i++)
			   for(j=0;j<3;j++)
			  {
			    a[i][j]=(char)br.read()-48;//真是比較笨的方法
			  }
		}//end of try
		catch(Exception e)
		{  
			System.out.print("IO 溢出!\n");
	  }
  }//end of ReadFormSI
		
	public static void main(String args[])
	{
		int input_s[][]=new int[3][3];
		int input_d[][]=new int[3][3];
		int i,j;
				
		State s;
		State e;
		
    System.out.print("請輸入初始狀態:\n");
		ReadFormSI(input_s);
		System.out.print("請輸入結果狀態:\n");
		ReadFormSI(input_d);
		
		s = new State(input_s,0,null);
		e= new State(input_d,-1,null);
		
		s.set_f(s.f_fuc(e));
		e.set_f(0);
		
		try
		{
		 BreadthSearch testInstance= new BreadthSearch(s,e);
		 if(testInstance.SearchSuccess())
		   testInstance.getResult();
		 else
		   System.out.print(" 不能達到!\n");
		 }
		 catch( Exception  em)
		 {
		 	  System.out.println("The ex is "+em);
		 }
		  
	}//end of main
}//end of ABT
 	 	      

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性色黄大片| 亚洲国产日韩av| 国内精品伊人久久久久av一坑 | 亚洲天堂精品在线观看| av一区二区三区在线| 中文字幕一区二区三区四区不卡| 成人黄色综合网站| 一区二区视频免费在线观看| 欧美日韩国产综合一区二区三区| 奇米777欧美一区二区| 久久久不卡网国产精品二区| jizzjizzjizz欧美| 亚洲福利视频一区| 精品国产乱码久久久久久久| 成人午夜伦理影院| 亚洲国产精品一区二区久久| 欧美tickling挠脚心丨vk| 国产精品久久久久久久岛一牛影视 | 欧美嫩在线观看| 久久 天天综合| 中文字幕在线播放不卡一区| 欧美优质美女网站| 久久草av在线| 亚洲欧洲av在线| 91精品国产美女浴室洗澡无遮挡| 国产自产2019最新不卡| 亚洲美女视频一区| 日韩欧美国产一二三区| 97精品国产97久久久久久久久久久久| 亚洲成人av电影在线| 久久九九全国免费| 欧美高清你懂得| 99久久精品久久久久久清纯| 日韩成人一级大片| 国产精品电影院| 精品三级av在线| 精品婷婷伊人一区三区三| 国产福利一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区| 4438亚洲最大| 国内一区二区视频| 国产精品天天摸av网| 色播五月激情综合网| 日韩视频免费直播| a级精品国产片在线观看| 青青国产91久久久久久| 亚洲欧美国产三级| 国产午夜久久久久| 日韩你懂的在线播放| 欧美在线免费观看视频| 成人免费观看av| 国产中文字幕精品| 丝袜a∨在线一区二区三区不卡| 一色屋精品亚洲香蕉网站| 2欧美一区二区三区在线观看视频| 91豆麻精品91久久久久久| 成人午夜av电影| 国产乱码精品一区二区三区av| 亚洲va国产va欧美va观看| 亚洲欧美日韩精品久久久久| 日本一二三四高清不卡| 久久久噜噜噜久久人人看| 日韩午夜在线播放| 69堂精品视频| 91精品麻豆日日躁夜夜躁| 欧美午夜理伦三级在线观看| 色播五月激情综合网| 色综合咪咪久久| 一本久久a久久精品亚洲| 91丝袜美女网| 99久久777色| 一本大道av一区二区在线播放| 国内不卡的二区三区中文字幕| 美女诱惑一区二区| 日韩va欧美va亚洲va久久| 午夜激情一区二区三区| 性做久久久久久免费观看欧美| 亚洲综合男人的天堂| 夜色激情一区二区| 亚洲一区二区三区在线| 亚洲电影一区二区三区| 五月天一区二区三区| 日韩和欧美一区二区三区| 日韩精品色哟哟| 另类专区欧美蜜桃臀第一页| 久久超碰97人人做人人爱| 黄网站免费久久| 国产成人精品一区二区三区网站观看| 国产麻豆精品久久一二三| 豆国产96在线|亚洲| 成人av综合一区| 91国产丝袜在线播放| 欧美日韩国产综合视频在线观看 | 久久精品国产秦先生| 精品久久久久久久久久久久包黑料| 国产精品羞羞答答xxdd| 另类专区欧美蜜桃臀第一页| 亚洲国产精品久久一线不卡| 亚洲欧美偷拍卡通变态| 欧美国产日韩一二三区| 国产精品免费视频观看| 久久久99免费| 久久久美女艺术照精彩视频福利播放 | 欧美老女人在线| 色狠狠桃花综合| 91精品国产综合久久精品性色| 欧美亚洲动漫精品| 日韩欧美电影一区| 国产精品美女久久久久久久久久久 | 色婷婷久久久综合中文字幕| 9191成人精品久久| 国产亚洲精品7777| 亚洲一区二区在线视频| 国内久久婷婷综合| 欧美综合久久久| 精品999久久久| 亚洲桃色在线一区| 久久se这里有精品| 色狠狠综合天天综合综合| 欧美大片一区二区| 亚洲欧美电影院| 精品一二三四区| 欧美日韩中文精品| 国产精品久久久久久久久久免费看| 亚洲成人免费视频| 国产999精品久久| 日韩一区二区麻豆国产| 亚洲区小说区图片区qvod| 麻豆成人91精品二区三区| 99re这里只有精品首页| 久久综合网色—综合色88| 亚洲综合一区二区三区| 国产成人av一区二区三区在线 | 亚洲精品福利视频网站| 国产在线看一区| 欧美日韩国产123区| 中文字幕在线视频一区| 美女www一区二区| 欧美亚洲动漫制服丝袜| 国产精品日韩精品欧美在线| 精品一区二区免费视频| 欧美日高清视频| 亚洲综合色婷婷| 不卡一区二区在线| 国产亚洲精品资源在线26u| 免费看黄色91| 3d成人h动漫网站入口| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品18久久久久久久久| 91精品国产91热久久久做人人| 亚洲精品你懂的| 97久久超碰国产精品| 中文字幕免费不卡| 国产精品77777竹菊影视小说| 欧美videos中文字幕| 日韩国产精品91| 欧美人妇做爰xxxⅹ性高电影| 一级做a爱片久久| 亚洲欧美欧美一区二区三区| 91精品久久久久久久91蜜桃| 亚洲视频资源在线| 国产成人综合在线播放| www一区二区| 国产精品99久久久久| 久久精品夜夜夜夜久久| 国产高清不卡一区| 久久久午夜精品| 成人在线视频首页| 亚洲国产岛国毛片在线| 国产91精品一区二区| 国产午夜精品久久久久久免费视 | 日韩精品综合一本久道在线视频| 91美女片黄在线| 久久精子c满五个校花| 日本不卡视频在线| 在线国产亚洲欧美| 国产精品女主播av| 国产在线国偷精品产拍免费yy| 欧美日韩一区二区在线视频| 亚洲欧美中日韩| 一区二区三区日本| 欧美三级蜜桃2在线观看| 日韩av电影免费观看高清完整版| 欧美午夜精品久久久久久孕妇| 亚洲欧美日本韩国| 在线观看日韩一区| 香蕉久久夜色精品国产使用方法 | 日本va欧美va瓶| 欧美xxxxx裸体时装秀| 国产91在线观看丝袜| 国产精品久久久久久久久晋中| 在线欧美一区二区| 青椒成人免费视频| 国产欧美一区二区三区鸳鸯浴| 不卡在线观看av| 午夜精品久久久久久久久久久| 欧美成人性战久久| 91视频免费播放| 免费成人在线观看视频| 国产无人区一区二区三区|