1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| #include <iostream>
using namespace std;
const int N = 10;
int sum; int g[N][N]; bool st[N][N]; int n, m, t; int sx, sy, fx, fy;
void dfs(int x, int y){ if(x == fx && y == fy){ sum ++; return; } int dx[] = {1, 0, 0, -1}; int dy[] = {0, 1, -1, 0}; for(int i = 0; i < 4; ++i){ if(g[x + dx[i]][y + dy[i]] == 1 && !st[x + dx[i]][y + dy[i]]){ st[x][y] = true; dfs(x + dx[i], y + dy[i]); st[x][y] = false; } } }
int main(){ ios::sync_with_stdio(false); cin.tie(0); cin >> n >> m >> t; cin >> sx >> sy >> fx >> fy; for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ g[i][j] = 1; } } while(t--){ int x, y; cin >> x >> y; g[x][y] = -1; } dfs(sx, sy);
cout << sum << endl; return 0; }
|