题意:
根据周围8格1的个数来更新中心的数字。具体规则如下:
- 周围的1少于2个,中心变为0;
- 周围的1为2个或者3个时,中心的1保持不变;
- 周围的1大于3个时,中心的1变为0;
-
周围的1刚好3个时,中心的0变成1。
思路:
简单模拟题,直接写就行了。
代码如下:
int count_n(int** board, int i, int j, int boardRowSize, int boardColSize){
int x[8]={-1,0,1,1,1,0,-1,-1};
int y[8]={-1,-1,-1,0,1,1,1,0};
int n=0;
int a=0,b=0;
int xt,yt;
for(a=0;a<8;++a){
xt=i+x[a];
yt=j+y[a];
if(xt>=0&&yt>=0&&xt<boardRowSize&&yt<boardColSize){
if(board[xt][yt]==1){
++n;
}
}
}
return n;
}
void gameOfLife(int** board, int boardRowSize, int boardColSize) {
int i=0,j=0;
int nb[boardRowSize][boardColSize];
int temp=0;
for(i=0;i<boardRowSize;++i){
for(j=0;j<boardColSize;++j){
temp=count_n(board,i,j,boardRowSize,boardColSize);
if(temp<2){
nb[i][j]=0;
}
else if(temp==2){
nb[i][j]=board[i][j];
}
else if(temp==3){
nb[i][j]=1;
}
else if(temp>3){
nb[i][j]=0;
}
}
}
for(i=0;i<boardRowSize;++i){
for(j=0;j<boardColSize;++j){
board[i][j]=nb[i][j];
}
}
return;
}