華為OJ 迷宮問題

2021-07-22 18:12:43 字數 1398 閱讀 4570

定義乙個二維陣列n*m(其中2<=n<=10;2<=m<=10),如5 × 5陣列下所示: 

int maze[5][5] = ;

它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。入口點為[0,0],既第一空格是可以走的路。

input

乙個n × m的二維陣列,表示乙個迷宮。資料保證有唯一解,不考慮有多解的情況,即迷宮只有一條通道。

output

左上角到右下角的最短路徑,格式如樣例所示。

sample input

0 1 0 0 0

0 1 0 1 0

0 0 0 0 0

0 1 1 1 0

0 0 0 1 0

sample output

(0, 0)

(1, 0)

(2, 0)

(2, 1)

(2, 2)

(2, 3)

(2, 4)

(3, 4)

(4, 4)

輸入描述:

輸入兩個整數,分別表示二位陣列的行數,列數。再輸入相應的陣列,其中的1表示牆壁,0表示可以走的路。資料保證有唯一解,不考慮有多解的情況,即迷宮只有一條通道。

輸出描述:

左上角到右下角的最短路徑,格式如樣例所示。

輸入例子:

5 5

0 1 0 0 0

0 1 0 1 0

0 0 0 0 0

0 1 1 1 0

0 0 0 1 0

輸出例子:

(0,0)

(1,0)

(2,0)

(2,1)

(2,2)

(2,3)

(2,4)

(3,4)

(4,4)

一、深度搜尋       思路:從起點位置開始,利用四個偏移量分別表示向右、向下、向左、向上移動;為了不走已經走過的位置,在走過的位置設定障礙物即設定該位置=1(採用雙端佇列,為了方便輸出以及搜尋過程)

#include#includeusing namespace std;

struct pos

;int main()

if (r>=0&&r<=n-1&&c>=0&&c<=m-1&&a[r][c]==0)

}} while (!s.empty())//輸出所走路徑

; int main()

if (r>=0&&r<=n-1&&c>=0&&c<=m-1&&a[r][c]==0)

} }

while (!s.empty())

{ cout << '('<

華為OJ多執行緒問題

問題描述 有4個執行緒和1個公共的字元陣列。執行緒1的功能就是向陣列輸出a,執行緒2的功能就是向字元輸出b,執行緒3的功能就是向陣列輸出c,執行緒4的功能就是向陣列輸出d。要求按順序向陣列賦值abcdabcdabcd,abcd的個數由執行緒函式1的引數指定。注 c語言選手可使用windows sdk...

牛客網上,華為迷宮問題

定義乙個二維陣列n m 其中2 n 10 2 m 10 如5 5陣列下所示 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。入口點為 0,0 既第一空格是可以走的路。input 乙個n m的二...

華為優招面試題 迷宮問題

昨天參加了華為優招,被問到一道演算法題,當時,有點思路,記得不論是在人工智慧課還是在演算法課上,這些都有講到過,然後想了好久,回答出來了不是乙個最優解的答案。下來總結一下這道題的思路。有乙個迷宮,裡面有障礙物,最左上角是入口,右下角是出口,請找出一條路徑可以走出迷宮。大致就像下面這個圖 陰影部分表示...