深搜刚上手的来这里
2026-07-01 19:04:30
发布于:江苏
15阅读
0回复
0点赞
回溯也算迷宫的一种,but回溯类深搜不同于迷宫,有重置这一部分(意味着走过的可以再走),但也大同小异。
迷宫模版看这边
迷宫模版
ps:之前讲的 必须加,别问为什么(敢问我吃了你),位置别搞错
参考代码
#include<bits/stdc++.h>
using namespace std;
int n,m,sx,sy,fx,fy,t,cnt = 0;
int mp[50][50];//记录每格是啥(墙或路)
bool vis[50][50];//记录每格是否被走过
int dx[]={1,-1,0,0};//记录x在上下左右过程中的坐标变化
int dy[]={0,0,1,-1};//记录y在上下左右过程中的坐标变化
void dfs(int x,int y){
if(x==fx&&y == fy){
cnt++;//由于统计的是方案数,所以要累加
return ;
}
for(int i =0;i<4;i++){
int nx = x+dx[i];
int ny = y+dy[i];
if(nx < 1||nx > n||ny < 1||ny > m) continue;
if(mp[nx][ny] == 1) continue;
if(vis[nx][ny] == 1) continue;
vis[nx][ny] = true;
dfs(nx,ny);
vis[nx][ny] = false;//就是这里,别漏添哈
}
}
int main(){
cin >> n >> m >> t;
cin >>sx >> sy>> fx >> fy;
for(int i = 1;i<= t;i++){
int x,y;
cin >> x >> y;
mp[x][y] = 1;
}
vis[sx][sy] = 1;//这步别忘了
dfs(sx,sy);
cout << cnt ;
return 0;
}
全部评论 1
点个赞吧
1周前 来自 江苏
0想要
1周前 来自 江苏
0








有帮助,赞一个