兩份**都是我寫的,前後隔了很久...還好沒有忘記bfs的基本思路
圖一表示起點,首先起點入隊,佇列中有(x1,y1),while(!q.empty())這個迴圈中出隊,圖二檢視出隊的這個點(此時是起點)四個方向,如果沒走過就入隊那麼,現在佇列中就有(x2,y2)(x3,y3)然後就一次進行上面的操作
最後就搜尋到啦......下面是**....第一次這麼認真的發文章...希望能幫到一些人
也供一些人指點.....
/*#include#include#includeusing namespace std;
int map[9][9]=,
, ,, ,
, , ,
};int tem_map[9][9];//臨時地圖,每次對其操作,每次開始重新copy
int step[9][9];//記錄走到點的步數
int x_sta,x_end,y_sta,y_end;
int arr[4][2]=,,,};
queueq;
void bfs()
for(int i=0;i<4;i++)//檢視四個方向,如果對於這個不熟悉的可以看我下面那次的**,四個if,四個方向,和這個一樣
} }}
int main()
return 0;
}*/#include#include#include#includeusing namespace std;
struct node
;int s[9][9]=,
, ,, ,
, , ,
};int x[9][9];
int main()
if(!x[a.x][a.y+1])
if(!x[a.x-1][a.y])
if(!x[a.x][a.y-1])
}cout<
nyoj 58 最小步數
難度 4 描述 這有乙個迷宮,有0 8行和0 8列 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,1,0,1,0,0,1 1,1,0,1,0,1,0,0,...
nyoj 58 最小步數
描述 這有乙個迷宮,有0 8行和0 8列 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,1,0,1,0,0,1 1,1,0,1,0,1,0,0,1 1,1...
nyoj 58 最小步數(bfs)
初入手搜尋,慢慢來,學演算法不能著急 本題從某一點開始廣搜.就是把上下左右可能的點都遍歷,看看有沒有合適的點,如果有,就放入佇列,然後4個方向判斷完成後,再從隊首取出乙個元素,接著進行,注意 當隊列為空時,說明搜尋結束仍然沒有找到目標點。這裡的廣搜和樹的層序遍歷極為相似,大家可以先看下樹的層序建立,...