第四章8つのデジタル検索技術と状態図の検索「高度にエントリからアルゴリズムの競争」

8つのデジタル

書式#include <キュー> 
書式#include <stdio.hに> 
する#include <iostreamの> 
書式#include <string.hの> 
名前空間stdを使用。
const int型LEN = 362880; 
構造体ノード
{ 
	INT状態[9]。
	INT DIS; 
}。
INTのDIR [4] [2] = {{ - 1,0}、{0、-1}、{1,0}、{0,1}}。
int型訪問[LEN] = {0}。
int型開始[9]。
int型の目標[9]。
長いINT工場[] = {1,1,2,6,24,120,720,5040,40320,362880}。
ボイドスワップ(int型B、INT)
{ 
  int型C = 0。
  C =。
  A = B。
  B = C。	
} 
BOOLカントール(INT STR []、INT N)
{ 
	COUT << "ハロー" << ENDL。
	長い結果= 0; 
	(INT iについては、= 0、I <N。 
	{
		用(INT J = I + 1、J <nであり、j ++)
		{ 
			IF(STR [I]> STR [J])
			{ 
				++カウント; 
			} 
		} 
		結果+ =カウント*工場[NI-1]。
	} 
	場合(訪問[結果]!)
	{ 
		訪問[結果] = 1。
		1を返します。
	} 
	{ 
		0を返します。
	} 
	
} 
int型BFS()
{ 
	ノードヘッド。
	memcpyを(head.state、スタート、はsizeof(head.state)); 
	head.dis = 0; 
	キュー<ノード> Q; 
	カントール(head.state、9)。
	q.push(ヘッド)
	
	一方、(q.empty()!)
	{ 
		ヘッド= q.front()。
		q.pop(); 
		int型Z;
		用(Z = 0; Z <9; Z ++)
		{ 
			IF(head.state [Z] == 0)
			{
				ブレーク; 
			} 
		} 
		int型X = Z%3。
		INT Y = Z / 3。
		printf( "head.state [%のD] =%dの"、Z、head.state [Z])。
		以下のために(INT I 0 =; I <4; ++ I)
		{ 
			int型newx = X + DIR [I] [0]。
			INT newy = Y + DIR [I] [1]。
			int型NZ = newx + 3 * newy。
			IF(newx> = 0 && newx <3 && newy> = 0 && newy <3)
			{ 
				ノードnewnode。
				memcpy(&newnode、&ヘッド、はsizeof(構造体ノード))。
				スワップ(newnode.state [z]は、newnode.state [NZ])。
				newnode.dis ++; 
				
				(memcmp(newnode.state、目標、はsizeof(目標))== 0)であれば
				{ 
					戻りnewnode.dis。
				IF(カンター(newnode.state、9))
				{ 
					
					q.push(newnode)。
			} 
		} 
		
	} 
	リターン-1。
} 

メインINT()
{ 
	(INTはI = 0 ++ iは; I <9)のための
	{ 
		CIN >> [i]の開始。
// coutの<< [i]を開始。
	} 
	COUT << "输入的棋盘:" << ENDL。
	用(INT iは= 1; I <= 9; ++ I)
	{ 
		COUT << [I-1] <<」「開始。
		IF(I%3 == 0)COUT << ENDL。
	} 
	
	のための(INT I = 0; I <9; ++ I)CIN >>ゴール[I]。
	裁判所未満<< "目标的棋盘:" <<てendl; 
	以下のために(INT I 1 =; I <= 9; ++ I)
	{ 
		COUT <<目標[I-1] <<」「。
		IF(I%3 == 0)COUT << ENDL。
	} 
	INT NUM = BFS()。
	もし(NUM =! - 1)
	{ 
		coutの<< NUM <<てendl; 
	} 
	{ 
		COUT << "不可" << ENDL。 
	} 
	0を返します。
 }

  

おすすめ

転載: www.cnblogs.com/chrysanthemum/p/11815838.html
おすすめ