迷宮問題 寫題筆記

2021-09-16 21:23:21 字數 1636 閱讀 4196

定義乙個二維陣列:

int maze[5][5] = ;

它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。

input

乙個5 × 5的二維陣列,表示乙個迷宮。資料保證有唯一解。

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)

#include#include#include#include#includeusing namespace std;

int map[10][10];

int min = 99999;

int vis[10][10];

int dir[4][2] = ;

struct node

a,tmp[100];

stacks;

int m = 0;

void dfs(int x, int y, int step)

for(int i = m-1; i >= 0; i--)

return ;

}

}for(int i = 0; i < 4; i++) }

}int main() }

vis[0][0] = 1;

dfs(0,0,0) ;

// cout << min << endl;

printf("(0, 0)\n");

for(int i = min - 1; i >= 0; i--)

cout << "(" << tmp[i].x << ", " << tmp[i].y << ")"<< endl;

return 0;

}

以下bfs只求出步數

#include#include#include#include#includeusing namespace std;

struct node

node(int _x, int _y, int _step) : x(_x),y(_y),step(_step) {} //建構函式

};int map[10][10];

//int min = 9999;

int vis[10][10];

int dir[4][2] = ;

int bfs()

q.pop();

vis[now.x][now.y] = 0;

for(int i = 0; i < 4; i++)

} }}

int main() }

cout << bfs() << endl;

return 0;

}

poj 迷宮問題 簡單題)

迷宮問題 time limit 1000ms memory limit 65536k total submissions 10318 accepted 6124 description 定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走...

迷宮問題(遞迴)筆記

上圖是乙個 8 行 7 列的迷宮,紅色方格表示牆,不能走,目的是從某一處起點開始讓小球最終走到右下角的位置 說明 map 表示地圖 i,j 表示從地圖的哪個位置開始出發 1,1 如果小球能到 map 6 5 位置,則說明通路找到.約定 當 map i j 為 0 表示該點沒有走過 當為 1 表示牆 ...

Reader and Writer問題 寫者優先

經典作業系統問題,中有注釋,不懂的函式可以查閱msdn reader and writer 問題,寫者優先,併發讀,互斥寫 include include include include include include include volatile long cntr,cntw 當前在讀的rea...