description
為了測試某種藥物對小白鼠方向感的影響,生物學家在實驗室做了乙個矩形迷宮,入口和出口都確定為唯一的,且分布在矩形的不同邊上。現在讓你算出小白鼠最短需要走多少步,才可以從入口走到出口。
input
共n+1
行,第一行為n(
n=0表示輸入結束),以下n行
n列0-1矩陣,
1表示不能通過,0表示可以通過(左上角和右下角為0
,即入口和出口),其中n<30。
output
只有乙個數,為最少要走的格仔數。0
表示沒有路徑。
sample input
50 1 1 1 1
0 0 1 1 1
1 0 0 0 1
1 1 1 0 1
1 1 1 0 0
40 0 1 1
0 0 0 1
1 1 1 1
1 1 1 0
0
sample output
90解題思路:
貪心演算法:1.用乙個結構體儲存衡中座標、當前步數。
2.讀取起點,此時步數step為1,分別向四個方向讀取可探索的點,step++併入隊
3.此時的點出隊,然後繼續同樣的方法判斷下乙個點
4.這樣的方法下判斷第乙個讀到出口的就是最短路徑。
5.隊列為空還是沒有讀到出口,則沒有路徑。
實現**:
#include#includeusing
std::cin;
using
std::cout;
using
std::endl;
using
std::queue;
struct
point ;
intmain()
maze[
0][0] = 1; //
讀取起點,並放入佇列
tmp.x = tmp.y = 0
; tmp.step = 1
; q.push(tmp);
while(!q.empty())
if (tmp.y - 1 >= 0 && !maze[tmp.x][tmp.y - 1])
if (tmp.x + 1
< n && !maze[tmp.x + 1][tmp.y])
if (tmp.y + 1
< n && !maze[tmp.x][tmp.y + 1])
q.pop();
//當前所處出隊,繼續下一步判斷
}
if (tmp.x == n - 1 && tmp.y == n - 1)//
若讀取到出口,輸出當前步數
cout << q.front().step
cout
<< "0"
<}
}
(本博文或多或少參考過其他網上資料,但時間已久忘記當初的參考了,在此對他們表示感謝!)
貪心演算法《最短路徑》
題目大意 存在幾個城市1 n 每個城市任意連向其他城市。並且,路程也是不盡相同的。若從乙個城市出發,去各個城市,則去各個城市每乙個城市的最短路程計算出來。如下是幾個城市的地圖 題目分析 乙個城市可能有多個路徑,但是尋找最小的路徑卻不容易。演算法 貪心演算法 從1城市出發,到達4和5城市最小路徑的充分...
python貪心演算法最短路徑 貪心演算法《最短路徑》
題目大意 存在幾個城市1 n 每個城市任意連向其他城市。並且,路程也是不盡相同的。若從乙個城市出發,去各個城市,則去各個城市每乙個城市的最短路程計算出來。如下是幾個城市的地圖 題目分析 乙個城市可能有多個路徑,但是尋找最小的路徑卻不容易。演算法 貪心演算法 從1城市出發,到達4和5城市最小路徑的充分...
最短路徑純貪心演算法。
dijkstra演算法,書上其實說的很簡潔,仔細看,仔細思考是會理解的.但要先理解幾條引論和推理.而自己思考的思路在不需要任何推理只從貪心思路出發,和dijkstra有所不同,但本質一樣,那麼自己按照理解,試著慢慢講下.一,問題 從某個源點,到其他各點的最短路徑.注意,不要想成某乙個點,到某個點的最...