核心处理如下,已迷宫为例:
1、退出条件,到达目标位置;
if(x==p && y==q) return;
2、搜索路径
int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}}
for(int k=0;k<3;k++) {
tx = x + next[k][0];
ty = y + next[k][1];
invalid(tx); invalid(ty)
}
3、递归搜索
if(a[tx][ty] == 0 && book[tx][ty] == 0){
book[tx][ty] = 1; 标记为已处理
dfs(tx, ty, step+1); 开始下一轮处理
book[tx][ty] = 0; 处理结束取消标记
}
网友评论