题面
LC2257
代码
class Solution {
public:int countUnguarded(int m, int n, vector<vector<int>>& guards, vector<vector<int>>& walls) {// we define:// 0: non-guarded// 1: guarded// 2: occupied by guard// 3: occupied by wallvector<vector<short>> map(m, vector<short>(n, 0));for(auto& guard : guards) {map[guard[0]][guard[1]] = 2;}for(auto& wall : walls) {map[wall[0]][wall[1]] = 3;}// start simulatefor(auto& guard : guards) {// mark horizontally// going leftmostfor(int c = guard[1]-1; c >= 0; --c) {if(map[guard[0]][c] == 2 || map[guard[0]][c] == 3) {break;} else {map[guard[0]][c] = 1; }}// going rightmostfor(int c = guard[1]+1; c < n; ++c) {if(map[guard[0]][c] == 2 || map[guard[0]][c] == 3) {break;} else {map[guard[0]][c] = 1; }}// going downmostfor(int r = guard[0]-1; r >= 0; --r) {if(map[r][guard[1]] == 2 || map[r][guard[1]] == 3) {break;} else {map[r][guard[1]] = 1; }}// going upmostfor(int r = guard[0]+1; r < m; ++r) {if(map[r][guard[1]] == 2 || map[r][guard[1]] == 3) {break;} else {map[r][guard[1]] = 1; }}}long long cnt = 0;for(int i = 0; i < m; ++i) {for(int j = 0; j < n; ++j) {if(!map[i][j]) {++cnt;}}}return cnt;}
};
思路
暴力模拟
待续