nyoj 58 最小步數

2021-06-17 14:48:20 字數 1668 閱讀 9884

兩份**都是我寫的,前後隔了很久...還好沒有忘記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個方向判斷完成後,再從隊首取出乙個元素,接著進行,注意 當隊列為空時,說明搜尋結束仍然沒有找到目標點。這裡的廣搜和樹的層序遍歷極為相似,大家可以先看下樹的層序建立,...