一道求最短距離的筆試題目

2021-04-01 23:14:51 字數 561 閱讀 5002

題目大概如下:在乙個10*10的矩陣中有兩個點a和b,在矩陣中其他的點要麼是0,要麼是1。如果是1就表示這個點是乙個障礙。現在求從a到b的最短距離。

題目其實並不難,但是我在考試的時候所給出的演算法還是有問題。我當時的思路是a到b的最短距離就是a周圍4個點中距離b最近的那個點的距離加一(如果其中某個點是障礙,則距離為無窮大)。我給出了乙個遞迴的演算法。但是在後來我上機驗證之後發現,該演算法需要考慮的情況比較多,乙個不注意就非常容易導致無窮遞迴。

仔細考慮了一下,發現了另外兩個解決思路:

思路一:這個10×10的矩陣,其實就是乙個具有100個節點的圖,其中每個節點與周圍4個節點相鄰,距離是1。於是求a到b的最短距離就變成了求圖中兩個點之間的最短路徑,這可以使用經典的dijstra演算法。不過空間效率比較低。

思路二:設定乙個相同大小的矩陣dist,儲存每個點到b點的距離,初值是無窮大。b點到b點的距離是0,b點周圍的4個點距離b的距離是1;而這四個點中每個點的周圍4個點距離b的距離是min ( 2 , dist [ p ] ),其中dist[p]是在矩陣dist中原來儲存的距離值。然後不斷的應用該演算法,不斷的擴散,就可以求出所有點到b的最短距離。

一道android筆試題目

面試 了一波,於是痛定思痛改頭換面,不得不說敲 中筆試和用電腦還是有很大區別的.題目大概是這樣的 假設限定輸入使用者輸入電子郵箱位址,使用者名稱必須只包含英文本母,數字和 並且必須以字母和數字開頭,郵件服務網域名稱只包含字母和數字 請使用你所熟悉的程式語言編寫乙個函式,該函式判斷輸入的字串是否為乙個...

求每一對頂點之間的最短距離

求每一對頂點之間的最短距離 鄰接矩陣 依次加入各個頂點 include include using namespace std define maxsize 32 string getstr string s,string s2 return str class graph bool init vo...

Floyd演算法(求每一對頂點之間的最短距離)

include include define ok 1 define error 1 define max vertex num 12 define network infinity 32767 typedef struct arccell adjmatrix max vertex num max ...