后端 b卷 无人机 int func(vector<vector<int>> block) { int n = block.size(), m = block[0].size(); int ans = 0; int dir[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; // 右 下 左 上 vector<vector<bool>> st(n, vector(m, false)); function<bool(int, int, int)> dfs = [&amp;](int x, int y, int dir) { if(x < 0 || x >= n || y < 0 || y >= m || block[x][y] == 1) return false; if(st[x][y]) { return true; } else { ++ ans; } st[x][y] = true; for(int k = 0; k < 4; ++ k) { int i = x + d[(dir + k) % 4][0], y = x + d[(dir + k) % 4][1]; if(dfs(i, j, (dir + k) % 4)) { return true; } } return true; }; dfs(0, 0, 0); return ans; }