50分……蒟蒻求助
#include<bits/stdc++.h>
using namespace std;
int G[10][10];
bool vis[10][10];//G地图,vis是标记是否走过
int n,m,t,sx,sy,fx,fy;
int gongx,juy;
int ans=0;
int dx[5]={-1,0,1,0},dy[5]={0,1,0,-1};//上右下左
void dfs(int x,int y)
{
if(x==fx&&y==fy)
{
ans++;
return;
}
else
{
for(int i=0;i<4;i++)//搜索四个方向
{
int xx=x+dx[i];
int yy=y+dy[i];//当前的横纵坐标
if(xx>=sx&&xx<=fx&&yy>=sy&&yy<=fy&&G[xx][yy]!=1&&vis[xx][yy]==0)
{
vis[xx][yy]=1;//标记此位置已搜索
dfs(xx,yy);
vis[xx][yy]=0;//回溯
}
}
}
}
int main(){
cin>>n>>m>>t;
cin>>sx>>sy>>fx>>fy;
for(int i=0;i<t;i++)
{
cin>>gongx>>juy;
G[gongx][juy]=1;
}
dfs(sx,sy);
cout<<ans;
return 0;
}