問題描述:給定乙個迷宮和乙個起點乙個終點,求起點到終點的最短路徑長度。
sample input
(說明:5行5列的迷宮,『#』為牆,『.』為路,起點為(0,3), 終點為(4,4))
sample output
(若不可達輸出-1)
解答:用bfs的方法,借助乙個佇列實現。
1 #include2 #include3 #include4using
namespace
std;56
char map[100][100];7
intn, m;89
struct
point
12};
1314
struct
node
18};
1920
bool isvalid(const point &p)
2324
int mindistance(const point &s, const point &d) , , , };
26bool visited[100][100
];27 memset(visited, false, sizeof
(visited));
28 queueq;
29 q.push(node(s, 0
));30 visited[s.x][s.y] = true;31
while (!q.empty())
36q.pop();
37for (int i = 0; i < 4; ++i) 43}
44}45return -1;46
}4748void buildmap(void
) 54}55
}5657int main(void
)
迷宮問題 最短路徑問題
給定乙個 n nn n 的二維陣列,如下所示 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。資料保證至少存在一條從左上角走到右下角的路徑。輸入格式 第一行包含整數 n。接下來 nn 行,每行...
迷宮最短路徑
include include using namespace std const int max n 100,max m 100 const int inf 100000000 使用pair表示狀態時,使用typedef會更加方便一些 typedef pairp 輸入 char maze max ...
迷宮最短路徑
問題描述 小a同學現在被困在了乙個迷宮裡面,他很想從迷宮中走出來,他可以向上 向下 向左 向右移動 每移動一格都需要花費1秒的時間,不能夠走到邊界之外。假設小a現在的位置在s,迷宮的出口在e,迷宮可能有多個出口。問小a想要走到迷宮出口最少需要花費多少秒?並輸出從起點到最近出口的路徑。任務要求 1 迷...