标记回溯一下就行了
AC代码
#include <bits/stdc++.h>
using namespace std;
#define LL long long
const int INF = 0x3f3f3f3f;
const int MAXN = 1e6+10;
int dx[] = {0,0,1,-1};
int dy[] = {1,-1,0,0};
bool mps[10][10];
int n, m, sx, sy, ex, ey;
int k;
bool check(int x, int y) {
return x>=1&&x<=n&&y>=1&&y<=m;
}
void dfs(int x, int y) {
if(x==ex && y==ey) {
k++;
return;
}
for(int i = 0; i < 4; i++) {
int xx = dx[i]+x;
int yy = dy[i]+y;
if(check(xx,yy) && !mps[xx][yy]) {
mps[xx][yy] = true;
dfs(xx,yy);
mps[xx][yy] = false;
}
}
return;
}
int main() {
int t;
cin >> n >> m >> t;
cin >> sx >> sy >> ex >> ey;
for(int i = 0; i < t; i++) {
int x, y;
cin >> x >> y;
mps[x][y] = true;
}
mps[sx][sy] = true;
dfs(sx,sy);
cout << k << endl;
return 0;
}