【问题标题】:Java - Issue in a Recursive Backtracking MazeJava - 递归回溯迷宫中的问题
【发布时间】:2025-04-14 10:45:01
【问题描述】:

看了this的博文,决定用它在Java中创建一个迷宫,用A*算法来解决。迷宫一代运作良好。我已经稍微修改了代码以适用于 Java 和我的目的。

不幸的是,我开始的时候并没有考虑它,但是示例将其打印为 ASCII。我希望它是一个带有 1 和 0 的二维数组,用于路径查找。

目前,它打印字符,例如,如果宽度和高度 = 10,它看起来像这样:

___________________
| |  _  |_    |_  |
| | |  _|  _| |   |
|___| |_  | | | | |
|  ___|  _| |___| |
|_  |_  |  _|  ___|
| |_____|  ___|   |
|      _| |  ___| |
| | |_|  _| | |  _|
|_|_________|_____|

我也让它把迷宫画到一个 GUI 上。这个看起来像这样(逆时针旋转 90 度,使 (1, 1) 在左下角):

我目前将 ASCII 迷宫添加到二维字符串数组中。数组中字符串的可能值是:

" ",
"_",
"  ",
" _",
" |",
"_ ",
"__",
"_|",

有没有办法循环遍历包含迷宫的数组,并根据 ASCII 迷宫中的下一个字符分配 1 或 0?如果是这样,您将如何解释水平线上方的额外空间,这些空间不会被识别为开放空间?

【问题讨论】:

  • @ErwinBolwidt 您是否阅读了最后一段,或者其中的任何一段?我不确定我的问题是否需要发布代码。 I️ 可以发布 I️ 目前如何拥有它,但这似乎并不会增加“我如何才能说明将添加为 1 的水平线上方的空间,但需要拥有一个以及它上面的空间。”
  • 所以你有想要更改的当前代码,并且你问“是否有一种方法可以循环遍历包含迷宫的数组,并根据接下来的内容分配 1 或 0字符在 ASCII 迷宫中吗?”。如果不查看该代码,很难弄清楚您当前拥有什么,您的问题是基于什么的。

标签: java arrays recursion maze


【解决方案1】:

只要把内部的高度加倍,就可以转换了

  • '_' 到 '▄'(0 大于 1)
  • '|'到“█”(1 上的 1)
  • ''到''(0高于0)

【讨论】:

    最近更新 更多