没判边界,我改一下
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