1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| const int dx[4] = {0, 1, 0, -1}; const int dy[4] = {1, 0, -1, 0}; bool DFS(int x, int y, int n, int m, vector<vector<int>>& grid, vector<vector<bool>>& visited) { if (x < 0 || x >= n || y < 0 || y >= m) return false; if (visited[x][y]) return false; if (grid[x][y] == 0) return false; // 0 表示不可通过
visited[x][y] = true;
if (x == n - 1 && y == m - 1) { return true; // 假设目标点是右下角 }
for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (DFS(nx, ny, n, m, grid, visited)) return true; }
visited[x][y] = false; return false; }
|