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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? state.h

?? ai 自動(dòng)排序 把數(shù)字0-8順序打亂,可自動(dòng)排序好
?? H
字號(hào):
/* 聲明網(wǎng)格中空格所有可能移動(dòng)的方向,至于為什么要包括"NONE"將在后面的代碼中顯現(xiàn)出來;*/
enum DIRECTION { NONE, NORTH, EAST, SOUTH, WEST }; 

// 聲明CState類 
class CState { 
private: 
// 使用1 to 9號(hào)索引來對(duì)應(yīng)網(wǎng)格的每個(gè)位置, 定義為 char類型是為了節(jié)省內(nèi)存;
char Grid[10]; 
char Depth; //Depth變量對(duì)游戲的最初原始狀態(tài)演變到當(dāng)前狀態(tài)所經(jīng)歷的步數(shù);
//我們需要記錄下父狀態(tài)是如何進(jìn)行移動(dòng)而得到當(dāng)前狀態(tài)的;
DIRECTION OperatorApplyed; 
// 父狀態(tài)指針,當(dāng)程序結(jié)束時(shí),我們可以利用它跟蹤所經(jīng)歷的狀態(tài),從而給出答案; 
CState *PrevState; 

// 尋找當(dāng)前網(wǎng)格中的空格位置或某一個(gè)具體數(shù)字的位置,默認(rèn)狀態(tài)是尋找空格位置; 
inline int FindBlank(char Search=0) { 
int Blank=1; 
while (Grid[Blank] != Search) { 
Blank++; 
} 
return Blank; 
} 
// 按照規(guī)定的方向移動(dòng)空格; 
void MoveBlank(DIRECTION Direction) { 
int Blank = FindBlank(); 
// 我們需要記住本次操作所移動(dòng)的方向;
OperatorApplyed = Direction; 
switch (Direction) { 
	case NORTH: 
Grid[Blank] = Grid[Blank - 3]; 
Grid[Blank - 3] = 0; 
break; 
case EAST: 
Grid[Blank] = Grid[Blank + 1]; 
Grid[Blank + 1] = 0; 
break; 
case SOUTH: 
Grid[Blank] = Grid[Blank + 3]; 
Grid[Blank + 3] = 0; 
break; 
case WEST: 
Grid[Blank] = Grid[Blank - 1]; 
Grid[Blank - 1] = 0; 
break; 
} 
} 

/* 下面的函數(shù)將被用于第一種方法的heuristics函數(shù)的一部分,它得到兩個(gè)索引位置的直角距離,它還用于確定一個(gè)數(shù)字當(dāng)前位置與其應(yīng)該所在位置的直角距離;*/
int GetDistanceBetween(int Tile1, int Tile2) { 
int X1, X2; 
int Y1, Y2; 
int temp=0; 
// 將grid位置轉(zhuǎn)換為X,Y坐標(biāo);
Y1 = 1; 
Y2 = 2; 
X1 = Tile1; 
X2 = Tile2; 
if(Tile1 > 3) { Y1 = 2; X1 = Tile1 - 3; } 
      if(Tile1 > 6) { Y1 = 3; X1 = Tile1 - 6; } 
      if(Tile2 > 3) { Y2 = 2; X2 = Tile2 - 3; } 
      if(Tile2 > 6) { Y2 = 3; X2 = Tile2 - 6; } 
      //為了確保距離值為正說,進(jìn)行必要的換位處理;
      if(Y1 - Y2 < 0) { 
temp = Y1; 
Y1 = Y2; 
Y2 = temp; 
      } 
      if(X1 - X2 < 0) { 
temp = X1; 
X1 = X2; 
X2 = temp; 
} 
      return ((Y1 - Y2) + (X1 - X2)); 
} 

   public: 
      // 異常處理;
      class ERROR_ILLEGAL_MOVE{}; 
      class ERROR_NO_MORE_DIRECTIONS{}; 
      class ERROR_OUT_OF_BOUNDS{}; 
      //用于heuristic函數(shù);它代表了當(dāng)前狀態(tài)與前一狀態(tài)的距離;這個(gè)數(shù)值越小越好。
      int GetDepth() { 
      return Depth; 
      } 

      // CState類構(gòu)造函數(shù);
      CState() { 
      Depth = 0; 
      Grid[1] = 6; // for slower machines use 4 
      Grid[2] = 1; // for slower machines use 1 
      Grid[3] = 7; // for slower machines use 3 
      Grid[4] = 3; // for slower machines use 2 
      Grid[5] = 0; // for slower machines use 0 
      Grid[6] = 4; // for slower machines use 5 
      Grid[7] = 5; // for slower machines use 8 
      Grid[8] = 8; // for slower machines use 7 
      Grid[9] = 2; // for slower machines use 6 
      PrevState = 0; 
      /*由于還沒有以前移動(dòng)的操作,所以這就是為什么我們需要聲明NONE 變量的原因。*/ 
      OperatorApplyed = NONE; 
      } 

      void SetPrevState(CState *Set) { 
      PrevState = Set; 
      } 

      CState* GetPrevState() { 
      return PrevState; 
      } 

      // 用于確定移動(dòng)操作是否合法
      bool CanBlankMove(DIRECTION Direction) { 
      int Blank = FindBlank(); 
      switch (Direction) { 
         case NORTH: 
            if (Blank > 3) { 
            return true; 
            } 
            else { 
            return false; 
            } 
            break; 
         case EAST: 
            if (Blank != 3 && Blank != 6 && Blank != 9) { 
            return true; 
            } 
            else { 
            return false; 
            } 
            break; 
         case SOUTH: 
            if (Blank < 7) { 
            return true; 
            } 
            else { 
            return false; 
            } 
            break; 
         case WEST: 
            if (Blank != 1 && Blank != 4 && Blank != 7) { 
            return true; 
            } 
            else { 
            return false; 
            } 
            break; 
         default: 
            return false; 
            break; 
      } 
      } 

      void setgrid(int index, int value) { 
      Grid[index] = value; 
      } 

      /*該函數(shù)如果返回"true", 當(dāng)前狀態(tài)將是最終狀態(tài),以前的狀態(tài)指針可以用來回退,從而得到解決問題的答案。*/ 
      bool Solution() { 
         if (Grid[1] == 1 && Grid[2] == 2 && Grid[3] == 3 && Grid[4] == 8 && Grid[5] 
== 0 && Grid[6] == 4 && Grid[7] == 7 && Grid[8] == 6 && Grid[9] == 5)
         { 
            return true; 
         } 
         else { 
            return false; 
         } 
      } 

      char GetGridValue(int Index) { 

      if (Index < 1 || Index > 9) { 
         throw ERROR_OUT_OF_BOUNDS(); 
      } 
      else { 
         return Grid[Index]; 
      } 
      } 

      // 含一個(gè)參數(shù)的構(gòu)造函數(shù);
      CState(CState* Init) { 
      Depth = (Init->GetDepth()); 
      OperatorApplyed = Init->GetLastOperator(); 
      PrevState = Init->GetPrevState(); 
      for (int n=1; n<=9; n++) { 
         Grid[n] = Init->GetGridValue(n); 
      } 
      } 

      DIRECTION GetLastOperator() { 
      return OperatorApplyed; 
   } 

   // 兩個(gè)參數(shù)的構(gòu)造 函數(shù);
   CState(CState* Init, DIRECTION Direction) { 
      int n; 
      PrevState = Init; 
      Depth = (Init->GetDepth() + 1); 
      for (n=1; n<=9; n++) { 
      Grid[n] = Init->GetGridValue(n); 
      } 
      MoveBlank(Direction); 
   } 

   // 另外一個(gè)heuristic函數(shù),它計(jì)算錯(cuò)誤網(wǎng)格的數(shù)量;
   int GetWrongTiles() { 
      return ((Grid[1] != 1) + 
      (Grid[2] != 2) + 
      (Grid[3] != 3) + 
      (Grid[4] != 3) + 
      (Grid[5] != 3) + 
      (Grid[6] != 3) + 
      (Grid[7] != 3) + 
      (Grid[8] != 3) + 
      (Grid[9] != 3) + 
      (Depth )); // 也用于第二種heuristic (A*)的depth 
   } 

   /* ManhattanDistance是一個(gè)技術(shù)術(shù)語,它代表了所有當(dāng)前位置數(shù)字與其應(yīng)該處于的位置的直角距離之和*/

   int GetManhattanDistance() { 
      int Result=0; 
      Result = GetDistanceBetween(1, FindBlank(1)); 
      Result = Result + GetDistanceBetween(2, FindBlank(2)); 
      Result = Result + GetDistanceBetween(3, FindBlank(3)); 
      Result = Result + GetDistanceBetween(4, FindBlank(8)); 
      Result = Result + GetDistanceBetween(5, FindBlank(0)); 
      Result = Result + GetDistanceBetween(6, FindBlank(4)); 
      Result = Result + GetDistanceBetween(7, FindBlank(7)); 
      Result = Result + GetDistanceBetween(8, FindBlank(6)); 
      Result = Result + GetDistanceBetween(9, FindBlank(5)); 
      Result = Result + Depth;// 也用于第二種heuristic (A*)的depth;
      return Result; 
   } 
};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波多野结衣亚洲一区| 欧美日韩日日骚| 亚洲国产精品黑人久久久| 精品亚洲成av人在线观看| 日韩欧美在线不卡| 美女一区二区三区在线观看| 欧美一区欧美二区| 免费在线观看一区二区三区| 欧美精品18+| 蜜桃视频一区二区| 精品久久久久久无| 国产精品一区二区三区99| 国产三级精品三级| 高清国产一区二区| 中文字幕一区二| 91美女片黄在线观看91美女| 一区二区三区四区高清精品免费观看 | 欧美成人女星排行榜| 久久精品国产精品青草| 26uuu亚洲综合色欧美| 国产福利一区二区三区视频| 欧美国产日韩在线观看| 成人黄动漫网站免费app| 亚洲色图欧美偷拍| 欧美性色综合网| 天堂va蜜桃一区二区三区 | 欧美欧美欧美欧美| 六月婷婷色综合| 国产欧美一区视频| 一本一道波多野结衣一区二区| 亚洲国产日产av| 欧美一区二区久久| 国产露脸91国语对白| 国产精品久久久久久久久搜平片| 色94色欧美sute亚洲13| 亚洲高清免费在线| 精品免费日韩av| 高清shemale亚洲人妖| 一区二区三区中文字幕| 8x8x8国产精品| 国产精品一区二区三区四区| 亚洲日穴在线视频| 欧美中文字幕一区二区三区亚洲| 奇米888四色在线精品| 国产欧美精品一区二区色综合 | 国产不卡视频在线播放| 亚洲另类在线一区| 欧美一二三区在线观看| 高清av一区二区| 亚洲国产日韩一级| 国产日韩欧美综合在线| 色婷婷久久一区二区三区麻豆| 日本免费新一区视频| 国产精品污网站| 欧美精品第1页| 成人教育av在线| 三级影片在线观看欧美日韩一区二区| 久久影院午夜片一区| 日本韩国欧美一区二区三区| 久久超碰97人人做人人爱| 中文字幕在线视频一区| 欧美日本一区二区三区四区| 国产成人综合视频| 亚洲电影中文字幕在线观看| 久久久久久免费网| 精品视频一区二区不卡| 国产成人久久精品77777最新版本| 亚洲综合激情另类小说区| 久久综合狠狠综合| 欧美伊人精品成人久久综合97 | 欧美精品在线观看播放| 国产99久久久国产精品潘金| 五月天视频一区| 国产精品免费网站在线观看| 正在播放一区二区| 91免费小视频| 国产一区二区三区在线看麻豆| 亚洲精品写真福利| 国产午夜精品一区二区 | 中文字幕一区二区三| 中文幕一区二区三区久久蜜桃| 亚欧色一区w666天堂| 99re8在线精品视频免费播放| 精品日韩一区二区三区免费视频| 同产精品九九九| 亚洲欧洲精品一区二区三区不卡| 日韩欧美在线一区二区三区| av成人动漫在线观看| 精品中文字幕一区二区| 麻豆国产精品官网| 日韩影院精彩在线| 亚洲成人av一区二区| 亚洲一区二区三区爽爽爽爽爽 | 久久你懂得1024| 精品国产91洋老外米糕| 欧美成人vps| 欧美mv日韩mv亚洲| 欧美变态tickling挠脚心| 欧美一区二区免费观在线| 欧美人牲a欧美精品| 欧美人妇做爰xxxⅹ性高电影| 欧美日韩国产精品成人| 欧美日韩三级一区| 69堂亚洲精品首页| 欧美一区二区三区性视频| 3d动漫精品啪啪1区2区免费| 56国语精品自产拍在线观看| 69堂精品视频| 日韩一区二区在线观看| 日韩三区在线观看| 日韩精品中午字幕| 久久欧美一区二区| 国产三级精品在线| 国产精品国产三级国产普通话蜜臀| 日本一区二区三区国色天香| 国产精品久久一级| 亚洲色图在线看| 亚洲第一搞黄网站| 免费看日韩a级影片| 国产一区激情在线| 成人免费视频国产在线观看| 91原创在线视频| 欧美日韩国产天堂| 欧美成人r级一区二区三区| 久久久精品免费网站| 国产精品精品国产色婷婷| 亚洲日韩欧美一区二区在线| 亚洲第一激情av| 精品一区二区免费看| 岛国一区二区三区| 在线看日韩精品电影| 91精品国产色综合久久不卡电影| 精品国产髙清在线看国产毛片| 久久久噜噜噜久久人人看| 中文字幕亚洲在| 亚洲成av人片在线观看无码| 蜜臀av亚洲一区中文字幕| 国产精品一区二区免费不卡| 99久久精品国产毛片| 欧美亚洲综合另类| 欧美成人vps| 自拍偷拍欧美激情| 日韩中文字幕区一区有砖一区| 久久精品国产久精国产| 成人黄色777网| 欧美日韩精品福利| 国产午夜精品在线观看| 亚洲精品福利视频网站| 七七婷婷婷婷精品国产| 国产激情视频一区二区在线观看| 一本色道亚洲精品aⅴ| 日韩欧美在线网站| 国产精品短视频| 秋霞午夜av一区二区三区| 国产成人免费网站| 欧美日韩精品一区二区三区四区 | 国产精品日日摸夜夜摸av| 亚洲国产综合人成综合网站| 国产在线精品视频| 欧美影片第一页| 久久久精品黄色| 亚洲国产精品久久久久婷婷884 | 成人小视频免费观看| 欧美日韩国产一级二级| 国产欧美一区二区三区网站| 亚洲成人在线观看视频| 成熟亚洲日本毛茸茸凸凹| 在线播放中文字幕一区| 欧美极品少妇xxxxⅹ高跟鞋| 日韩精品一卡二卡三卡四卡无卡| 成人一区二区三区在线观看| 欧美日韩一区二区电影| 欧美激情一区二区三区| 日韩综合小视频| www.日韩av| 亚洲精品一线二线三线| 亚洲一区在线视频| 成人免费看黄yyy456| 日韩一区二区三区三四区视频在线观看| 国产精品剧情在线亚洲| 精品制服美女丁香| 欧美色老头old∨ideo| 国产精品乱码一区二区三区软件| 青青草伊人久久| 欧美中文字幕久久| 久久精品在这里| 蜜臀久久久久久久| 欧美亚洲综合在线| 中文字幕日韩av资源站| 韩国理伦片一区二区三区在线播放| 欧美中文字幕一区二区三区 | 欧美日韩成人综合在线一区二区| 国产精品天美传媒沈樵| 捆绑紧缚一区二区三区视频| 欧美亚洲综合在线| 中文字幕一区日韩精品欧美| 国产在线精品一区二区夜色| 91精品国产麻豆| 亚洲sss视频在线视频| 99精品视频在线播放观看|