洛谷 走迷宫(深搜)https://www.luogu.org/problemnew/show/P1605
#include<iostream>
using namespace std;
#define N 6
#define M 6
int n,m,t,sx,sy,fx,fy,ans=0;
char map[N][M];//地图上的陷阱
int v[N][M];//走过的点
void dfs(int xx,int yy);
int dx[4] = {1,0,-1,0};
int dy[4] = {0,-1,0,1};
int main()
{
cin>>n>>m>>t;
cin>>sx>>sy>>fx>>fy;
for(int i=1;i<=t;i++)
{
int a,b;
cin>>a>>b;
map[a][b] = '#';//标记陷阱
}
dfs(sx,sy);
cout<<ans<<endl;
return 0;
}
void dfs(int xx,int yy)
{
if(xx==fx&&yy==fy)
{
ans++;
}
else
{
for(int i=0;i<4;i++)
{
if(xx+dx[i]>=1&&xx+dx[i]<=n&&yy+dy[i]>=1&&yy+dy[i]<=m&&v[xx+dx[i]][yy+dy[i]] != 1&&map[xx+dx[i]][yy+dy[i]] != '#')
{ //下一个点在地图内,且没走过,且不是陷阱,则继续搜索
v[xx][yy]=1;
dfs(xx+dx[i],yy+dy[i]);
v[xx][yy]=0;
}
}
}
}