深搜40分求助,悬关!!

P1605 迷宫

没判边界,我改一下
by XuYueming @ 2023-08-14 13:23:59


可能会越界
by AAA404 @ 2023-08-14 13:24:16


@[XuYueming](/user/728079) 判了,只不过可能会越界
by Weizhuo_Zhao @ 2023-08-14 13:25:47



by Happy_Doggie @ 2023-08-14 13:25:58


@[Weizhuo_Zhao](/user/681558) 谢谢
by XuYueming @ 2023-08-14 13:35:30


@[weee](/user/742221) ```cpp // 感谢大佬的纠错,确实初始化的时候边界判了 #include<bits/stdc++.h> using namespace std; int dx[4]={0,1,0,-1};//四个方向 int dy[4]={1,0,-1,0}; bool mapp[6][6];//打标记用的 int vis[105][105],num=0; int m,n,t,sx,sy,fx,fy,l,r; void dfs(int q,int p) {//dfs if(q==fx && p==fy) {//如果到达终点,方法数加一,重新遍历下一种方法 num++; return; } int i,x,y; for(i=0;i<=3;i++) {//循环四个方向(板子),就不再多说了 x=q+dx[i]; // 这里反了 y=p+dy[i]; if(mapp[x][y]==0&&vis[x][y]==1) { mapp[q][p]=1; // 原来这里好像错了 dfs(x,y); mapp[q][p]=0; } } } int main(){ cin>>n>>m>>t; cin>>sx>>sy; cin>>fx>>fy; for(int i=1;i<=n;i++) {//地图全部刷新为一 for(int j=1;j<=m;j++) { vis[i][j]=1; } } for(int i=1;i<=t;i++) {//遇到障碍刷新为零 cin>>l>>r; vis[l][r]=0; } dfs(sx,sy);//dfs搜索有多少种方案 cout<<num<<endl;//输出 return 0; } ```
by XuYueming @ 2023-08-14 13:36:11


@[weee](/user/742221) ~~$p$ 和 $q$ 长得好像啊~~
by XuYueming @ 2023-08-14 13:37:00


谢谢@[XuYueming](/user/728079)
by Happy_Doggie @ 2023-08-14 13:57:02


|