最短路徑 孫悟空找唐僧

2021-08-13 22:09:42 字數 1243 閱讀 8626

唐僧被妖怪關在迷宮中。孫悟空好不容易找到一張迷宮地圖,並通過乙個魔法門來到來到迷宮某個位置。假設迷宮是乙個n*m的矩陣,它有兩種地形,0表示平地,1表示沼澤,孫悟空只能停留在平地上。孫悟空目前的位置在座標(sx,sy)處,他可以向上下左右四個方向移動。

請你幫助孫悟空計算一下,迷宮中是否存在一條路從他所在位置(sx,sy)到達唐僧所在位置(tx,ty),如果有,請計算出最短的一條路徑。

每個測試樣例的第1行是2個正整數n (1≤n≤100),m (1≤m≤100),表示迷宮是n*m的矩陣。接下來的n行輸入迷宮,每行有m個數字(0或者1),數字之間用乙個空格間隔。

接下來的1行是4個整數sx,sy,tx,ty,1≤sx,tx≤n,1≤sy,ty≤m,表示孫悟空所在位置為第sx行第sy列,唐僧所在位置為第tx行第tx列。迷宮左上角編號是(1,1),右下角編號是(n, m)。

資料保證(sx,sy)格和(tx,ty)必定為平地,且孫悟空的初始位置(sx, sy)並不在唐僧所在格(tx, ty)。

輸出孫悟空到達唐僧處所需經過的最短路徑,如果不能到達,請輸出「no」

2 20 1

1 01 1 2 2

no4 4 

0 0 0 1

0 1 0 0

0 1 0 0 

0 0 0 1

1 1 3 4

5

#include #include using namespace std;

int g[100][100];

int n, m;

struct point

bool operator==(const point& p)

bool operator!=(const point& p)

};bool get_nbr(const point& p, point& nbr)

if(p.x < n-1 && g[p.x+1][p.y] == 0)

if(p.y > 0 && g[p.x][p.y-1] == 0)

if(p.y < m-1 && g[p.x][p.y+1] == 0)

return false;

}int main()

q.pop();

old_t--;

if(old_t == 0)

}if(q.front() == point(tx, ty))

cout << step;

else cout << "no";

return 0;

}

唐僧為什麼可以領導孫悟空

這一句話也是看後收藏的,覺得非常有道理,對於乙個公司老闆,怎麼管理和組織團隊,還是在於用人,畢業5年出來,工作了幾家公司,感覺小公司的老闆都很會用人,利用有限的人力,卻幹出了很多的事情!對比大公司和小公司的區別 1 大公司基本見不到老闆的面,永遠沒有家的感覺,一切工作只為薪水,一旦失去高薪,員工會毫...

唐僧在三八節給孫悟空的信

唐僧在三八婦女節前寫給孫悟空的信 悟空徒兒 那天正在開會,沒有接你 會場有監控,有些事 也說不清楚。回想取經路上的艱難困苦,沒有你,為師早被妖怪吃掉變成肥料了。我知道,你是乙個有思想 有魄力的人,現在卻受了這些委屈。西天取經你確實成績突出,這些都屬於過去了。時代在變,光本事是不夠的,我們都要與時俱進...

回溯法找迷宮最短路徑

有乙個二維陣列,0表示路,1表示牆,求其中任意兩點的最短路徑 我們先看,怎麼求一條路徑 求兩點路徑是乙個資料結構上的典型的迷宮問題,解決辦法如下 從一點開始出發,向四個方向查詢 上,右,下,左 每走一步,把走過的點的值 1,防止重複行走,並把走過的點壓入堆疊 表示路徑 如果遇到牆 或者已走過的點則不...