幅優先探索による迷路最短経路問題の解決
幅優先探索による迷路最短経路問題の解決
タイトル:N*Mの大きさの迷路が与えられ、迷路は通路と壁で構成され、一歩ごとに隣接する上下左右4格子の通路に移動することができる.始点から終点までの最小ステップ数を求める.
注意:本題では、始点から必ず終点まで移動できると仮定します.
せいげんじょうけん
N,M<=100
(#.S Gは壁、通路、始点、終点をそれぞれ表す)
タイトルは『チャレンジプログラミングコンテスト』から
タイトル:N*Mの大きさの迷路が与えられ、迷路は通路と壁で構成され、一歩ごとに隣接する上下左右4格子の通路に移動することができる.始点から終点までの最小ステップ数を求める.
注意:本題では、始点から必ず終点まで移動できると仮定します.
せいげんじょうけん
N,M<=100
(#.S Gは壁、通路、始点、終点をそれぞれ表す)
#include
#include
using namespace std;
const int INF=100000000;
const int MAX_M=100,MAX_N=100 ;
typedef pairP;
char maze[MAX_N][MAX_M+1];//
int N,M;
int sx,sy;//
int gx,gy;//
int d[MAX_N][MAX_M];//
//4
int dx[4]= {1,0,-1,0},dy[4]= {0,1,0,-1};
// (sx,sy) (gx,gy)
// , INF
int bfs()
{
queueque;
// INF
for(int i=0; i=0&&nx=0&&ny>N>>M;
for(int i=0; i>maze[i][j];
if(maze[i][j]=='S')
sx=i,sy=j;
if(maze[i][j]=='G')
gx=i,gy=j;// if ,
}// , if 。
}
solve();
return 0;
}
//
//10 10
//#S######.#
//......#..#
//.#.##.##.#
//.#........
//##.##.####
//....#....#
//.#######.#
//....#.....
//.####.###.
//....#...G#
タイトルは『チャレンジプログラミングコンテスト』から