所以我正在完成一项任务,我完全被难过了。我必须为一个程序修改别人的代码,该程序使用堆栈来模拟递归并通过2D迷宫找到它的方式。我必须修改程序以显示正确的路径,不包括导致或死路的任何单元格。
程序目前的工作方式是从当前位置获取所有可能的移动,然后将它们按西,东,北,南顺序推送到堆栈。然后它将顶部单元格从堆栈中弹出并移动到它。它重复这个过程,直到它进入死胡同,此时它会从堆栈顶部弹出一个较旧的可能位置并跳回到它,从那里继续,或者如果它找到结束它停止。
我遇到的问题是程序一旦从堆栈中弹出就不会保留移动,因此回溯和标记不正确的单元格不是那种选择。
我的问题,我想更多地征求意见,我应该采取什么策略来标记不正确的细胞,这样我才能在迷宫结束时只打印正确的细胞?
如果需要,我可以提供代码,但程序非常大,包含几个.java文件。
如果您需要更多信息,请与我们联系。我真的只是希望能朝着正确的方向努力。
答案 0 :(得分:0)
对于那些可能偶然发现的人,我最终编写了一个递归算法,当它能够从某个位置找到它的最终路径时,它会将其标记为正确路径的一部分,移动起始位置,重置迷宫,再次运行,重复直到它结束。