BFS +構造
BFSのステップの最小数に最後の出力ので、工程数を含む構造と、指定された位置、復帰機能、各点の情報記録場合到着しました。
完全なコード
書式#include <iostreamの> の#include <CStringの> の#include <キュー> 使用して 名前空間はstdを、 int型のX2、Y2、L。 INT VIS [ 310 ] [ 310 ]。 INTの K [ 8 ] [ 2 ] = {{ - 1、 - 2 }、{ - 2、 - 1 }、{ - 2、1 }、{ - 1、2 }、{ 1、 - 2 }、{ 2、 - 1 }、{ 2、1 }、{ 1、2 }}。 構造体ノード { int型X、Y、S。 (ノードのint、int型 B、INT C) { X = 。 Y = B。 S =のC。 } }。 ボイド BFS(int型のx、int型のY) { キュー <ノード> Q。 q.push(ノード(X、Y、0 )); 一方、(!q.empty()) { ノードT = q.front()。 q.pop()。 もし(TX == X2 && TY == Y2) { COUT << TS << ENDL。 返します。 } のために(int型 i = 0 ; iは< 8 ; iは++ ) { int型 TX = t.x + K [i]が[ 0 ]。 INTの TY = t.y + K [i]は[ 1 ]。 もし(TX> = 0 && TX <L && TY> = 0!&& TY <L && VIS [TX] [TY]) { VIS [TX] [TY] = 1 。 q.push(ノード(TX、TY、TS + 1 ))。 } } } } int型のmain() { int型のT、X1、Y1。 cinを >> トン。 一方、(t-- ) { memsetの(VIS、0、はsizeof (VIS))。 CIN >> L >> X1 >> Y1 >> X2 >> Y2; BFS(X1、Y1); } 戻り 0 。 }