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