用佇列求解迷宮最短路徑及其應用 圍住神經貓

2021-09-16 14:23:10 字數 1451 閱讀 7305

給定乙個m×n的迷宮圖,求一條從指定入口到出口的最短路徑.假設迷宮圖如圖所示(m=8, n=8)

對於圖中的每個方塊,空白表示通道,陰影表示牆。所求路徑必須是簡單路徑,即在求得路徑上不能重複出現同一通道塊。

為了演算法方便,在迷宮外圍加了一道圍牆。

對應迷宮陣列為:

var gamemap = [m + 2][n + 2]int,,,

,,,,

,,,}

go語言實現求解:

package main

import (

"fmt"

)const (

m = 8

n = 8

)// 方塊型別

type box struct

// 順序隊

type queue struct

var (

gamemap = [m + 2][n + 2]int,,,

,,,,

,,,}

)func gamesearch(xstart, ystart, xend, yend int) bool

queue.front = -1

queue.rear = -1

queue.rear++

queue.data[queue.rear].i = xstart

queue.data[queue.rear].j = ystart // (xstart, ystart)進隊

queue.data[queue.rear].pre = -1

gamemap[xstart][ystart] = -1

for queue.front != queue.rear && !find

// 順時針

for di = 0; di < 4; di++

if gamemap[i][j] == 0 }}

return false

}func printpath(queue *queue, front int)

k = 0

fmt.println("迷宮路徑如下:\n")

圍住神經貓

遊戲使用c#寫的,專案原始碼

附上我喜歡的歌的英文翻譯

心做し

迷宮最短路徑

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 迷...

棧與佇列應用 迷宮問題(DFS非最短路徑)

先輸入行列,在輸入迷宮 以 1 1 結束 include include define maxsize 100 define error 1 define ok 1 struct direction direction direct 4 方向試探 struct box typedef struct ...