我是個努力使我的程序讀取這樣的迷宮:洪水填補算法迷宮
#.#######
#.......#
####.####
#....#..#
#.####.##
並打印出迷宮可達區和非可到達的區域,這應該是這樣的:
#+#######
#+++++++#
####+####
#++++#--#
#+####-##
牆用「#」表示,可通過的單元格用「。」表示。
取代單元格的「+」意味着那些單元格可從迷宮的頂部入口點到達。 「 - 」符號是進入迷宮頂部時無法到達的細胞。
例如,在上述迷宮中,除了右下角的單元格之外,所有單元格都是可到達的。這是因爲這些細胞無法從迷宮頂部的入口點到達。
我想用一些遞歸來填充迷宮,並確定可達區域,但我遇到了麻煩。
這是我到目前爲止有:
int
flood_fill(m_t * maze, int row, int col) {
int direction;
direction = flood_fill(maze, row+1, col); /* down */
if (!direction) {
direction = flood_fill(maze, row, col+1); /* right */
}
if (!direction) {
direction = flood_fill(maze, row-1, col); /* up */
}
if (!direction) {
direction = flood_fill(maze, row, col-1); /* left */
}
if (direction) {
maze->M[row][col].type = path;
}
return direction;
}
我知道我的flood_fill功能沒有做正確的事,而且我有困難得到它的權利。任何人都可以幫助我,請讓我的代碼正確填充代碼的一部分,以便我可以在代碼中的其他地方調用函數,並確定可以到達哪些單元格。
[DEMO](http://ideone.com/SABKsZ) – BLUEPIXY
非常感謝你回答這個問題BLUEPIXY :) – RoadRunner
我意識到你爲此付出了很多努力,而且我非常感謝。我標記你的答案是正確的。你知道我可以如何實現這個問題http://stackoverflow.com/questions/37303378/finding-a-cost-for-a-maze-path。 @BLUEPIXY – RoadRunner