You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java栈实现无Node类迷宫老鼠DFS算法运行循环报错求助

代码运行失败的核心原因
  • 栈坐标存取顺序错误:入栈时你先压入x坐标、再压入y坐标,栈是后进先出结构,出栈时你先弹出的元素实际是y坐标,却赋值给了curx,后弹出的x坐标赋值给了cury,直接导致坐标逻辑完全错位,这是两个坐标间反复循环的核心诱因。
    修正方案:调整入栈顺序为先压y、再压x,或者调整出栈赋值逻辑为int cury = stack.pop(); int curx = stack.pop();,保证坐标对应关系正确。
  • 合法坐标判断未覆盖终点:isValid方法仅判定值为0或2的坐标合法,但你定义的终点标记是'e'(对应int值为101),未被纳入合法范围,程序永远无法识别终点位置。
  • 方向判断误用else if分支:四个移动方向的判断用了else if,每次只会压入第一个符合条件的方向到栈中,其余合法方向会被直接忽略,无法实现DFS全路径遍历的逻辑。应去掉所有else,对四个方向独立判断,所有合法方向都压入栈中。
  • 终止条件和迷宫配置不匹配:代码中的终止条件是判断当前格子值为2,但你定义的迷宫终点为'e',没有值为2的格子,就算走到终点也不会触发成功返回。
  • 已访问标记逻辑可优化:你定义的boolean[][] isVisited数组全程未使用,属于无效代码。当前通过修改迷宫值为','标记已访问的逻辑虽然能实现去重,但如果需要保留原始迷宫数据,建议改用isVisited数组做访问标记。

内容的提问来源于stack exchange,提问作者nojob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:15:11