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

C语言矩阵中起点到终点的0路径检测程序问题排查求助

问题排查与修复

你的程序输出不符合预期的核心原因有两个,下面逐一分析并给出修复方案:

1. 起始点合法性未校验,且测试用例起始点不符合路径要求

你的测试用例中起始坐标(0,0)对应的矩阵值是1,但DFS逻辑一开始就判断adj[i][j] != 0就直接返回,导致整个DFS根本没有执行任何遍历操作,visited数组全程保持初始的false,自然目标点(3,3)不会被标记为已访问。

同时你也没有提前校验起始点和目标点本身是否为0——如果这两个点任意一个不是0,直接就不存在符合要求的路径。

2. 方向注释完全错误

DFS中四个方向的注释和实际移动方向不匹配:

  • i - 1, j 是向上移动(原注释写“Move left”)
  • i + 1, j 是向下移动(原注释写“Move Right”)
  • i, j - 1 是向左移动(原注释写“Move top”)
  • i, j + 1 是向右移动(原注释写“Move bottom”)

修复后的完整代码

#include <stdio.h>
#include <stdbool.h>
#define N 5
void dfs(int adj[][N], int i, int j, bool visited[][N]);
bool hasPathDfs(int adj[][N], int sx, int sy, int dx, int dy);

int main()
{
    int matrix[N][N] = {
        {1, 0, 0, 0, 0},
        {2, 3, 0, 3, 1},
        {0, 4, 0, 0, 0},
        {0, 0, 0, 2, 4},
        {5, 0, 0, 2, 5}};
  
    // 把起始点改为(0,1),对应矩阵值为0,符合路径要求
    int sx = 0, sy = 1, dx = 3, dy = 3;
    printf("Find path from (%d,%d) to (%d,%d):\n", sx, sy, dx, dy);
    printf("DFS: %s\n", hasPathDfs(matrix, sx, sy, dx, dy) ? "true" : "false");

    return 0;
}

void dfs(int adj[][N], int i, int j, bool visited[][N])
{
    // 越界、非0、已访问则返回
    if (i < 0 || i >= N || j < 0 || j >= N || adj[i][j] != 0 || visited[i][j])
    {
        return;
    }
    visited[i][j] = true;
    dfs(adj, i - 1, j, visited); // 向上
    dfs(adj, i + 1, j, visited); // 向下
    dfs(adj, i, j - 1, visited); // 向左
    dfs(adj, i, j + 1, visited); // 向右
}

bool hasPathDfs(int adj[][N], int sx, int sy, int dx, int dy)
{
    // 提前校验起始点和目标点是否为0,直接排除不可能的情况
    if (adj[sx][sy] != 0 || adj[dx][dy] != 0)
    {
        return false;
    }
    
    bool visited[N][N];
    int i,j;
    for ( i = 0; i < N; i++)
    {
        for ( j = 0; j < N; j++)
        {
            visited[i][j] = false;
        }
    }
    dfs(adj, sx, sy, visited);
    return visited[dx][dy];
}

修复说明

  1. 在hasPathDfs开头增加了起始点和目标点的合法性校验,避免无效的DFS遍历。
  2. 修正了DFS中的方向注释,保证逻辑可读性。
  3. 修改了main函数中的起始点为(0,1)(对应矩阵值为0),此时运行程序会输出true,符合预期的路径存在判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:12:46