我发现我不管怎么写都很别扭,最后只能是用搜索后的结果来决定标不标记
搜索的核心代码
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);
}
}
}
有没有什么思路呢