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

Java实现网格DFS路径统计时添加return语句输出异常原因求解

问题原因分析

该问题是回溯算法的状态还原错误导致的,具体逻辑如下:

  • 你的DFS函数在通过边界和访问状态校验后,会第一时间将当前坐标board[i][j]标记为已访问(赋值为1)
  • 当触发终点判断条件i == m - 1 && j == n - 1时,如果添加了return语句,函数会直接终止,后续负责回溯还原的board[i][j] = 0代码完全没有执行机会
  • 这就会导致终点坐标永久被标记为已访问,后续所有其他路径走到终点位置时,都会被开头board[i][j] == 1的校验规则拦截,直接判定为非法路径返回,最终只会统计到第一条走到终点的路径
优化修复方案

如果要保留return语句减少无意义的递归调用、提升性能,只需要在return前手动还原终点的访问状态即可,修改后的终点分支代码如下:

if (i == m - 1 && j == n - 1) {
    count++;
    System.out.print(path + " ");
    board[i][j] = 0; // 手动还原终点的访问标记
    return;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:45:09