7/27小课堂
2024-07-30 09:59:47
发布于:浙江
合集快捷跳转
/*
-----------fjn-----------
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int dx[5]={0,1,0,-1};
int dy[5]={1,0,-1,0};
//右
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
MAP[1002][1002];
vis[1002][1002];//判断当前位置是否走过
void dfs(int x,int y){//当前点的坐标
if(x==ex&&y==ey){//当前点已经到达终点
cout<<"我到终点了"<<endl;
return ;//退出程序
}
for(int i=0;i<4;i++){//往上下左右四个方向深搜
//下一步会走到哪里
int fx=x+dx[i];
int fy=y+dy[i];
//设置边界,防止超出 如果当前是#(没路) 下一步的位置已经被走过
if(fx<1||fy<1||fx>n||fy>n||MAP[fx][fy]=='#'||vis[fx][fy])continue;
//标记下一个点已经走过
vis[fx][fy]=1;
dfs(fx,fy);//往下一个点走 (全部执行完毕才会退出)
vis[fx][fy]=0;
}
}
int main(){
// 1~n
// #不能走 .可以走
//1.起始点和终点(题目输入给出) 起始点sx sy 终点ex ey
//2.确定方向数组
//3.深搜(一般情况带入起始点)
//标记起始点已经走过
vis[1][1]=1;
bfs(1,1);
return 0;
}
这里空空如也
有帮助,赞一个