「日の形状を歩き、その後、最短経路のそれぞれの位置に出力する馬は、ステージ出力に来ている-1
しかし、AC; - 直接BFSの検索によって解決が、出力いくつかの問題を抱えて、私はprintfの(「%5D)で開始することができますすべてのWA、coutの<<左<< setw(5)になり
私はこの問題は、また、printf関数を使用した問題を解決するのか分かりません
#include <ビット/ STDC ++ H> 使用して名前空間STDを、 typedefの長い長いLL。 typedefの符号なしの長い長いULL。const int型 INF = - 1 ; INTのN、M。 int型のSX、SY; INT迷路[ 500 ] [ 500 ]。 int型の D [ 500 ] [ 500 ]。 INT DX [ 8 ] = { - 1、 - 2、 - 2、 - 1、1、2、2 、1 }、DY [ 8 ] = { - 2、 - 1、1、2、2、1、 - 1、 - 2 }。 ボイド BFS(int型のx、int型のY){ キュー <ペア< 整数、整数 >> Q。 q.push(対 < 整数、整数 > (X、Y)); D [X] [Y] = 0 ; しばらく(!q.empty()){ ペア < int型、INT > T = q.front()。q.pop(); 以下のために(int型 i = 0 ; iは< 8 ; I ++ ){ int型 NX = t.first + DX [I]。 INT NY = t.second + DY [I]。 もし(NX> = 0 && NX <N && NY> = 0 && NY <M && D [NX] [NY] == INF){ D [NX] [NY] = D [t.first] [t.second ] + 1 。 q.push(対 < 整数、整数 > (NX、NY))。 } } } } int型のmain(){ イオス::偽); CIN >> N >> M >> SX >> SY。 memsetの(D、INF、はsizeofのD)。 BFS(SX - 1、SY- 1 )。 以下のために(int型 I = 0 ; iがN <; Iは++ ){ ため(INT J = 0 ; J <M、J ++ ) COUT <<左<< setw(5)<< D [i]は[J]。 coutの << てendl; } 戻り 0 。 }