社区讨论

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 条回复,欢迎继续交流。

正在加载回复...