void dfs(int nowx,int nowy){ //方法为深度优先搜索,输入当前结点 if(nowx==ex&&nowy==ey){ //若结点为终点,则计数并输出 mycount++; printf("\n第%d条路:\n",mycount); printf("(%d,%d)->",fx,fy); for(int i=0;i<temp.size()-1;i++){ printf("(%d,%d)->",temp[i].x,temp[i].y); } printf("(%d,%d)\n",ex,ey); printf("当前迷宫路径为:\n"); // 定义一个数组记录需要标记的点的位置 bool flag[maxn+1][maxn+1] = {0}; for( i = 0; i < temp.size()-1; i++) { route[fx][fy] = 1; route[ex][ey] = 1; flag[temp[i].x][temp[i].y] = 1;// 记录需要标记的点的位置 } // 遍历整个迷宫,根据需要标记的点的位置进行标记 for(int a = 1; a <= m; a++) { for(int b = 1; b <= n; b++) { if(route[a][b] == 1 || flag[a][b] == 1) { printf("1 "); } else { printf("0 "); } } printf("\n"); } return; } for(int i=0;i<4;i++){ //遍历邻点 int newx=nowx+X[i]; int newy=nowy+Y[i]; if(judge(newx,newy)){ // 访问邻点 temp.push_back(node(newx,newy)); //将邻点设为下一路径结点 ismark[nowx][nowy]=true; //并标记 dfs(newx,newy); temp.pop_back(); //到这一步说明该邻点方案以实现完(或成功或失败) ismark[newx][newy]=false; //取消标记 } } }增加下一个坐标的方向并展示代码
时间: 2023-12-22 18:03:23 浏览: 116
新建文件夹_r_himd92_nowx4u_tallgpe_shortc3w_
这段代码是一个深度优先搜索算法,用于在迷宫中找到从起点到终点的所有路径。下面是增加下一个坐标的方向并展示代码:
```c++
// 定义四个方向
int X[4]={0,0,-1,1};
int Y[4]={-1,1,0,0};
void dfs(int nowx,int nowy){
//方法为深度优先搜索,输入当前结点
if(nowx==ex&&nowy==ey){ //若结点为终点,则计数并输出
mycount++;
printf("\n第%d条路:\n",mycount);
printf("(%d,%d)->",fx,fy);
for(int i=0;i<temp.size()-1;i++){
printf("(%d,%d)->",temp[i].x,temp[i].y);
}
printf("(%d,%d)\n",ex,ey);
printf("当前迷宫路径为:\n");
// 定义一个数组记录需要标记的点的位置
bool flag[maxn+1][maxn+1] = {0};
// 对每个邻点进行遍历
for(int i=0;i<temp.size()-1;i++){
int x = temp[i].x;
int y = temp[i].y;
// 判断下一个坐标的方向,并标记
for(int j=0; j<4; j++){
int newx = x + X[j];
int newy = y + Y[j];
if(newx == temp[i+1].x && newy == temp[i+1].y){
flag[x][y] = true;
break;
}
}
}
// 遍历整个迷宫,根据需要标记的点的位置进行标记
for(int a = 1; a <= m; a++) {
for(int b = 1; b <= n; b++) {
if(route[a][b] == 1 || flag[a][b] == 1) {
printf("1 ");
} else {
printf("0 ");
}
}
printf("\n");
}
return;
}
for(int i=0;i<4;i++){ //遍历邻点
int newx=nowx+X[i];
int newy=nowy+Y[i];
if(judge(newx,newy)){ // 访问邻点
temp.push_back(node(newx,newy)); //将邻点设为下一路径结点
ismark[nowx][nowy]=true; //并标记
dfs(newx,newy);
temp.pop_back(); //到这一步说明该邻点方案以实现完(或成功或失败)
ismark[newx][newy]=false; //取消标记
}
}
}
```
阅读全文