POJ1915

BFS +構造

BFSのステップの最小数に最後の出力ので、工程数を含む構造と、指定された位置、復帰機能、各点の情報記録場合到着しました。

完全なコード

書式#include <iostreamの> 
の#include <CStringの> 
の#include <キュー>
 使用して 名前空間はstdを、
int型のX2、Y2、L。
INT VIS [ 310 ] [ 310 ]。
INTの K [ 8 ] [ 2 ] = {{ - 1、 - 2 }、{ - 2、 - 1 }、{ - 21 }、{ - 12 }、{ 1、 - 2 }、{ 2、 - 1 }、{ 21 }、{ 12 }}。

構造体ノード
{ 
    int型X、Y、S。
    (ノードのintint型 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 
}

 

おすすめ

転載: www.cnblogs.com/benzikun/p/11210500.html