代码有注释,各位 dalo 康一下,谢谢!
#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=p+dx[i];
y=q+dy[i];
if(mapp[x][y]==0&&vis[x][y]==1) {
mapp[x][y]=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;
}