#include <iostream>
using namespace std;
int migong[10][10];//1表示空地,2表示障碍物
int value[10][10];//0表示没有被访问,1表示已经访问过了
int n,m,t;
int sx,sy;
int fx,fy;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int cnt=0;
int minn=0x3f3f3f3f;
void dfs(int x,int y,int step)
{
if(x==fx&&y==fy)
{
cnt++;
if(step<minn)
{
minn=step;
}
return ;
}
//顺时针搜索右下左上
for(int k=0;k<4;k++)
{
int nx=x+dx[k];
int ny=y+dy[k];
if(migong[nx][ny]==1&&value[nx][ny]==0)
{
value[nx][ny]=1;
dfs(nx,ny,step+1);
value[nx][ny]=0;
}
}
}
int main()
{
cin>>n>>m>>t;
cin>>sx>>sy>>fx>>fy;
int zh_x,zh_y;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
migong[i][j]=1;
}
}
//设置障碍
for(int i=0;i<t;i++)
{
cin>>zh_x>>zh_y;
migong[zh_x][zh_y]=2;
}
value[sx][sy]=1;
dfs(sx,sy,0);
cout<<cnt<<endl;
return 0;
}
dfs-迷宫问题
最新推荐文章于 2024-03-26 12:55:58 发布