怎么在搜索的过程标记!!
查看原帖
怎么在搜索的过程标记!!
638272
thehanged楼主2024/5/30 17:23

我发现我不管怎么写都很别扭,最后只能是用搜索后的结果来决定标不标记

搜索的核心代码

bool search_dir(int x, int y, int dir, int index){ // 朝着一个方向搜索
    if(index == s.size()) return true;
    int nx = x + dx[dir], ny = y + dy[dir];
    if(nx < 1 || ny < 1 || nx > n || ny > n || g[nx][ny] != s[index]) return false;
    return search_dir(nx, ny, dir, index + 1);
}

void mark_path(int x, int y, int dir, int index){
    if(index == s.size()) return;
    st[x][y] = true;
    int nx = x + dx[dir], ny = y + dy[dir];
    mark_path(nx, ny, dir, index + 1);
}

void dfs(int x, int y){
    for(int dir = 0; dir < 8; ++dir){
        if(search_dir(x, y, dir, 1)){
            mark_path(x, y, dir, 0);
        }
    }
}

有没有什么思路呢

2024/5/30 17:23
加载中...