アルゴリズム学習--深さ優先探索から迷路を歩くことと最短経路を探すこと(二)
1270 ワード
地図がn*mの行列であると仮定すると、歩ける格子は0、歩けない格子は1、終点はx=p、y=qにあり、起点(0,0)から終点までの最短経路は何ですか.
まず、道を探す方向をどのように操作しますか.
最小値の更新:
次のステップを判断します.
全体コードセグメント:
まず、道を探す方向をどのように操作しますか.
int next[4][2]={{0,1},//
{1,0},//
{0,-1},//
{-1,0}};//
最小値の更新:
void find_out(int x, int y ,int step)
{
if(x==p && y==q){ //
if(step
次のステップを判断します.
for(k=0;k<=3;k++){
// :
tx=x+next[k][0];
ty=y+next[k][1];
}
全体コードセグメント:
int min=9999999;
int map[100][100];
int book[100][100];
int find_out(int x,int y,int step)
{
int next[4][2]={{0,1},//
{1,0},//
{0,-1},//
{-1,0}};//
int tx,ty,k;
if(x==p && y==q){ //
if(stepn||ty<1||ty>m){
continue;
}
// ;
if(map[tx][ty]==0 && book[tx][ty]==0){
book[tx][ty]=1;
dfs(tx,ty,step+1);
book[tx][ty]=0;
}
}
return step ;
}