此题主要掌握对于格点周围空格的遍历以及相关的边界处理。
void gameOfLife(vector<vector<int>>& board) {
vector<vector<int>> dirs{{-1, 0}, {-1, -1}, {0, -1}, {1, -1}, {1, 0}, {1, 1}, {0, 1}, {-1, 1}};
vector<vector<int>> copyBoard = board;
int xlen = copyBoard.size();
int ylen = copyBoard[0].size();
for(int i = 0; i < xlen; ++i) {
for(int j = 0; j < ylen; ++j) {
int lives = 0;
for(int c = 0; c < 8; ++c) {
int ni = dirs[c][0] + i;
int nj = dirs[c][1] + j;
if(ni >= 0 && ni < xlen && nj >= 0 && nj < ylen){
if(copyBoard[ni][nj] == 1)
lives++;
}
}
if(copyBoard[i][j] == 1) {
if(lives < 2 || lives > 3)
board[i][j] = 0;
}
else {
if(lives == 3)
board[i][j] = 1;
}
}
}
}