我是个努力使我的程序读取这样的迷宫:洪水填补算法迷宫
#.#######
#.......#
####.####
#....#..#
#.####.##
并打印出迷宫可达区和非可到达的区域,这应该是这样的:
#+#######
#+++++++#
####+####
#++++#--#
#+####-##
墙用“#”表示,可通过的单元格用“。”表示。
取代单元格的“+”意味着那些单元格可从迷宫的顶部入口点到达。 “ - ”符号是进入迷宫顶部时无法到达的细胞。
例如,在上述迷宫中,除了右下角的单元格之外,所有单元格都是可到达的。这是因为这些细胞无法从迷宫顶部的入口点到达。
我想用一些递归来填充迷宫,并确定可达区域,但我遇到了麻烦。
这是我到目前为止有:
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