摘要:對(duì)應(yīng)迷宮數(shù)組為實(shí)現(xiàn)語(yǔ)言實(shí)現(xiàn)求解方塊類(lèi)型方塊行號(hào)方塊列號(hào)上一個(gè)方塊在隊(duì)列中位置順序隊(duì)進(jìn)隊(duì)順時(shí)針迷宮路徑如下運(yùn)行結(jié)果應(yīng)用圍住神經(jīng)貓游戲使用寫(xiě)的項(xiàng)目源碼下載體驗(yàn)最后附上我喜歡的歌的英文翻譯心做
問(wèn)題
給定一個(gè)M×N的迷宮圖,求一條從指定入口到出口的最短路徑.假設(shè)迷宮圖如圖所示(M=8, N=8)
對(duì)于圖中的每個(gè)方塊,空白表示通道,陰影表示墻。所求路徑必須是簡(jiǎn)單路徑,即在求得路徑上不能重復(fù)出現(xiàn)同一通道塊。
為了算法方便,在迷宮外圍加了一道圍墻。
對(duì)應(yīng)迷宮數(shù)組為:
var gameMap = [M + 2][N + 2]int{ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 1, 0, 0, 0, 1, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 1, 0, 1}, {1, 0, 0, 0, 0, 1, 1, 0, 0, 1}, {1, 0, 1, 1, 1, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 1, 0, 0, 0, 0, 1}, {1, 0, 1, 0, 0, 0, 1, 0, 0, 1}, {1, 0, 1, 1, 1, 0, 1, 1, 0, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, }實(shí)現(xiàn)
go語(yǔ)言實(shí)現(xiàn)求解:
package main import ( "fmt" ) const ( M = 8 N = 8 ) // 方塊類(lèi)型 type Box struct { i int // 方塊行號(hào) j int // 方塊列號(hào) pre int // 上一個(gè)方塊在隊(duì)列中位置 } // 順序隊(duì) type Queue struct { data []Box front int rear int } var ( gameMap = [M + 2][N + 2]int{ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 1, 0, 0, 0, 1, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 1, 0, 1}, {1, 0, 0, 0, 0, 1, 1, 0, 0, 1}, {1, 0, 1, 1, 1, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 1, 0, 0, 0, 0, 1}, {1, 0, 1, 0, 0, 0, 1, 0, 0, 1}, {1, 0, 1, 1, 1, 0, 1, 1, 0, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, } ) func gameSearch(xStart, yStart, xEnd, yEnd int) bool { var i, j, di int find := false var queue Queue queue.data = []Box{} queue.front = -1 queue.rear = -1 queue.rear++ queue.data = append(queue.data, Box{}) queue.data[queue.rear].i = xStart queue.data[queue.rear].j = yStart // (xStart, yStart)進(jìn)隊(duì) queue.data[queue.rear].pre = -1 gameMap[xStart][yStart] = -1 for queue.front != queue.rear && !find { queue.front++ i = queue.data[queue.front].i j = queue.data[queue.front].j if i == xEnd && j == yEnd { find = true printPath(&queue, queue.front) return true } // 順時(shí)針 for di = 0; di < 4; di++ { switch di { case 0: i = queue.data[queue.front].i - 1 j = queue.data[queue.front].j case 1: i = queue.data[queue.front].i j = queue.data[queue.front].j + 1 case 2: i = queue.data[queue.front].i + 1 j = queue.data[queue.front].j case 3: i = queue.data[queue.front].i j = queue.data[queue.front].j - 1 } if gameMap[i][j] == 0 { queue.rear++ queue.data = append(queue.data, Box{}) queue.data[queue.rear].i = i queue.data[queue.rear].j = j queue.data[queue.rear].pre = queue.front gameMap[i][j] = -1 } } } return false } func printPath(queue *Queue, front int) { var k, j, ns = front, 0, 0 var maxSize = len(queue.data) fmt.Println(" ") for k != 0 { j = k k = queue.data[k].pre queue.data[j].pre = -1 } k = 0 fmt.Println("迷宮路徑如下: ") for k < maxSize { if queue.data[k].pre == -1 { ns++ fmt.Printf(" (%d, %d)", queue.data[k].i, queue.data[k].j) if ns%5 == 0 { fmt.Println(" ") } } k++ } } func main() { gameSearch(1, 1, 8, 8) }運(yùn)行結(jié)果 應(yīng)用
圍住神經(jīng)貓
游戲使用C#寫(xiě)的,項(xiàng)目源碼
下載體驗(yàn)
附上我喜歡的歌的英文翻譯
心做し
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/23303.html
摘要:前端日?qǐng)?bào)精選任何網(wǎng)站都可以變成但我們需要做得更好譯高性能個(gè)新工具加速你的應(yīng)用在生產(chǎn)環(huán)境中使用記錄日志手把手教你用開(kāi)發(fā)一個(gè)發(fā)布中文譯繼承實(shí)例譯基于背后的合理化,而非設(shè)計(jì)掘金實(shí)現(xiàn)哪家強(qiáng)中的眾成翻譯快速入門(mén)個(gè)人文章一個(gè)基于區(qū)塊鏈的深網(wǎng) 2017-07-22 前端日?qǐng)?bào) 精選 任何網(wǎng)站都可以變成 PWA —— 但我們需要做得更好[譯] 高性能 React:3 個(gè)新工具加速你的應(yīng)用在生產(chǎn)環(huán)境中使用...
摘要:本人郵箱歡迎轉(zhuǎn)載轉(zhuǎn)載請(qǐng)注明網(wǎng)址代碼已經(jīng)全部托管有需要的同學(xué)自行下載引言迷宮對(duì)于大家都不會(huì)陌生那么迷宮是怎么生成已經(jīng)迷宮要如何找到正確的路徑呢用代碼又怎么實(shí)現(xiàn)帶著這些問(wèn)題我們繼續(xù)往下看并查集朋友圈有一種算法就做并查集什么意思呢比如現(xiàn)在有零 本人郵箱: 歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明網(wǎng)址 http://blog.csdn.net/tianshi_kcogithub: https://github.c...
摘要:樹(shù)是一副無(wú)環(huán)連通圖。互不相連的樹(shù)組成的集合稱(chēng)為森林。表示無(wú)向圖的數(shù)據(jù)類(lèi)型圖的基本操作的兩個(gè)構(gòu)造,得到頂點(diǎn)數(shù)和邊數(shù),增加一條邊。該方法不符合第一個(gè)條件,上百萬(wàn)個(gè)頂點(diǎn)的圖是很常見(jiàn)的空間不滿(mǎn)足。 四種重要的圖模型: 無(wú)向圖(簡(jiǎn)單連接) 有向圖(連接有方向性) 加權(quán)圖(連接帶有權(quán)值) 加權(quán)有向圖(連接既有方向性又帶有權(quán)值) 無(wú)向圖 定義:由一組頂點(diǎn)和一組能夠?qū)蓚€(gè)頂點(diǎn)相連的邊組成。 特殊:...
摘要:寫(xiě)在最前本次分享一下通過(guò)廣度優(yōu)先搜索解決八數(shù)碼問(wèn)題并展示其最短路徑的動(dòng)畫(huà)效果。一個(gè)排列中逆序的總數(shù)就稱(chēng)為這個(gè)排列的逆序數(shù)。如果起始狀態(tài)與結(jié)束狀態(tài)的逆序數(shù)的奇偶性相同,則說(shuō)明狀態(tài)可達(dá),反之亦然。 寫(xiě)在最前 本次分享一下通過(guò)廣度優(yōu)先搜索解決八數(shù)碼問(wèn)題并展示其最短路徑的動(dòng)畫(huà)效果。 歡迎關(guān)注我的博客,不定期更新中—— 效果預(yù)覽 該效果為從[[2, 6, 3],[4, 8, 0],[7, 1, ...
摘要:由于是從頂點(diǎn)到的最短路徑,則有。算法流程根據(jù)最短路徑的最優(yōu)子結(jié)構(gòu)性質(zhì),提出了以最短路徑長(zhǎng)度遞增,逐次生成最短路徑的算法。相關(guān)文章王者編程大賽之一王者編程大賽之二蓄水池王者編程大賽之三背包王者編程大賽之四約瑟夫環(huán) 首發(fā)于 樊浩柏科學(xué)院 自如年底就會(huì)擁有 50W 間房子,大家知道每間房房子都是需要配置完才能出租給自如客的,整個(gè)房租的配置過(guò)程是很復(fù)雜的,每天都需要大量的物流師傅將家電、家具...
閱讀 1176·2021-11-23 10:10
閱讀 1498·2021-09-30 09:47
閱讀 887·2021-09-27 14:02
閱讀 2966·2019-08-30 15:45
閱讀 3019·2019-08-30 14:11
閱讀 3609·2019-08-29 14:05
閱讀 1819·2019-08-29 13:51
閱讀 2205·2019-08-29 11:33