代码如下
#include <cstdio>
#include <cstring>
using namespace std;
int n , m , t , x1 , y1 , xx , yy , xxx , yyy , cnt;
int dx[4] = {0 , 0 , -1 , 1};
int dy[4] = {-1 , 1 , 0 , 0};
bool map[10][10];
void dfs(int x , int y)
{
if (x == xx && y == yy)
{
cnt++;
return;
}
if (map[x][y]) return;
for (int i = 0; i <= 3; i++)
{
int x_new = x + dx[i];
int y_new = y + dy[i];
if (x_new >= 1 && x_new <= n && y_new >= 1 && y_new <= m && !(map[x_new][y_new]))
{
map[x_new][y_new] = true;
dfs(x_new , y_new);
map[x_new][y_new] = false;
}
}
}
int main()
{
scanf("%d%d%d%d%d%d%d" , &n , &m , &t , &x1 , &y1 , &xx , &yy);
map[x1][y1] = true;
for (int i = 1; i <= t; i++)
{
scanf("%d%d" , &xxx , &yyy);
map[xxx][yyy] = true;
}
dfs(x1 , y1);
printf("%d" , cnt);
return 0;
}