【BFS] leetcode 542 01マトリックス

問題:https://leetcode.com/problems/01-matrix/

        マルチソース最短パス。彼らは広いブラシで検索し、ゼロにすることができたときに見つけ深く、広い口コミを検索を行う前に、この質問。

クラス解決{
 パブリック
    ベクトル <ベクトル< INT >> updateMatrix(ベクトル<ベクトル< INT >>&行列){ 
        
        int型、M = matrix.size()。
        INT、N =行列[ 0 ] .size()。
        ベクター <ベクトル< INT >> RES(M、ベクトル< INT >(N - 1 ))。
        キュー < 整数 > Q;
        以下のためにint型 i = 0 ; iがm <; iは++ 
        { 
            ためINT J = 0; J <nであり、j ++ 
            { 
                場合(行列[I] [J] == 0 
                { 
                    RES [I] [J] = 0 ; 
                    q.push(私は N * + j)は、
                } 
            } 
        } 
        
        ベクトル < INT > DX { 010、 - 1 }。
        ベクター < INT > DY { 10、 - 10 }。
        しばらく(!q.empty())
        { 
            int型 CUR = q.front()。
            q.pop(); 
            
            int型 I = CUR / N;
            int型 J = CUR%N; 
            
            int型のk = 0 ; K < 4 ; kは++ 
            { 
                int型のx = I + DX [K]。
                INT Y = J +のDY [K]。
                もし(x> = 0 && Y> = 0 && X <M && Y < N)
                { 
                    場合(RES [X] [Y] == - 1 
                    { 
                        RES [X] [Y]= RES [I] [J] + 1 
                        q.push(のx * nの+ Y)。
                    } 
                } 
            } 
        } 
        
        戻りRES。
    } 
}。

 

おすすめ

転載: www.cnblogs.com/fish1996/p/11312242.html