1 规定一个搜索顺序(右下左上)
2 标记起点(book[1][1] = 1)
3 dfs:
void dfs(int x, int y, int step){//坐标及步数
int next[4][2] = {0 , 1}, {1 , 0}, {0 , -1}, {-1 , 0};//右下左上
if(...){//是否到达
if(step < min)
min = step;
return ;
}
for(int i = 0; i <= 3 ; i++){
x += next[k][0];
y += next[k][1];
if(...) continue;//是否越界
if(...){ //判断是否为障碍物或者已经在路径中
book[x][y] = 1;
dfs(x , y , step+1);
book[x][y] = 0;
}
}
return ;
}








网友评论