迷路(BFS)

1、少なくともINFは、あなたが戻って歩いてみようではないだろう。

2、typedefのペア<int型、int型>の使用は明確な、役に立たない権利を言いませんでした。

3、奇妙な。

書式#include <iostreamの> 
の#include <キュー> 
の#include <ユーティリティ>
 使用して 名前空間はstdを、
INT DX [] = { 1、 - 100 }。
int型 DY [] = { 001、 - 1 }。
整数 N、M、D [ 1005 ] [ 1005 ]、SX、SY、FX、FY。
チャー B [ 1005 ] [ 1005 ]。
const  int型 INF = 1E6; 
typedefのペア < int型int型 >P; 
キュー <P> QUE; Rの
 int型の答え。
INT BFS(int型のx、int型のY)
{ 
    que.push(P(X、Y))。
    D [X] [Y] = 0 ;
    一方、(que.size())
    { 
        P = que.front()。
        que.pop(); 
        もし(p.first == FX && p.second ==年度)ブレーク
        
        以下のためにINT iが= 0 ; I <= 3 ; I ++ 
        { 
            int型 XX = p.first + DX [I]。
            int型 YY = p.second +DY [I];
             IF(XX> = 1 && YY> = 1!&& XX <= N - && YY <= M && B [XX] [YY] = ' ' && D [XX] [YY] = INF)
            { 
                que.push(P( XX、YY))// 括弧内にある人々 、使用量がルック有する 
                Dを[XX] [YY] = D [p.first] [p.second] + 1 ; 
                
            } 
        } 
    } 
    戻りD [FX] [FY]; 
} 
int型のmain(){ 
    CIN >> N- M; 
    CIN >> SX SY >> >> FX FY。
    以下のためにINT iが= 1 ; I <= N; I ++ INT J = 1 ; J <= Mであり、j ++ 
            CIN >> B [i]は[J]。
    以下のためにINT iが= 1 ; I <= N I ++ のためのINT J = 1 ; J <= Mであり、j ++ 
            Dを[I] [J] = INF。 = BFS(SX、SY)。
    coutの <<答え<< てendl; 
}

4、それを次の時間を行います

おすすめ

転載: www.cnblogs.com/beiyueya/p/12123778.html