社区讨论
50求调
P1605迷宫参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mjocubzy
- 此快照首次捕获于
- 2025/12/27 21:47 2 个月前
- 此快照最后确认于
- 2025/12/27 21:51 2 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,t;
int x2,y2,x1,y11;
int a[2005][2005],sum;
bool vis[2005][2005];//用于标记是否走过
void dfs(int x,int y){
if(x==x1&&y==y11){
sum++;//到达终点后次数加一
return;//回溯
}
if(x<1||x>n||y<1||y>m||a[x][y]||vis[x][y]) return;//满足任何一个就说明不能走了,回溯
vis[x][y]=1;//标记为1说明走过了
dfs(x+1,y);
dfs(x,y+1);
dfs(x-1,y);
dfs(x,y-1);
vis[x][y]=0;//回溯
}
int main(){
cin>>n>>m>>t;
cin>>x2>>y2;
cin>>x1>>y11;
for(int i=1;i<=t;i++){
int x,y;
cin>>x>>y;
a[x][y]=1;//有障碍
}
vis[x2][y2]=1;//要从起点来开始搜
dfs(x1,y2);//给dfs传入数据
cout<<sum<<endl;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...