#include <bits/stdc++.h>
using namespace std;
int a[10][10]={0};//地图
int v[10][10]={0};//走过的标记
int dx[]={0,0,1,-1};//方向
int dy[]={1,-1,0,0};//方向
int x2,y2,q,w;
int sum=0;
void dfs(int strax,int stray){
int i;
if (strax==x2&&stray==y2){
sum++;
return;//返回,继续搜索,回溯
}
else{
for (i=0;i<4;i++){
int tx,ty;
tx=strax+dx[i];
ty=stray+dy[i];
if (v[tx][ty]==0&&a[tx][ty]==0&&tx>=1&&tx<=q&&ty>=1&&ty<=w)//判断没有走过和没有障碍{
v[tx][ty]=1;//标记走过
dfs(tx,ty);
v[tx][ty]=0;//还原状态
}
}
}
}
int main(){
int n,m,i,j,k,x,y,x1,y1;
cin>>q>>w;
cin>>k;
cin>>x1>>y1>>x2>>y2;
for (i=1;i<=k;i++){
cin>>x>>y;
a[x][y]=1;
}
v[x1][y1]=1;//标记起点走过
dfs(x1,y1);
cout<<sum;
}
迷宫-洛谷1605
最新推荐文章于 2023-02-12 10:12:02 发布