思路
思路参考链接:链接 链接中使用的是-1,2作为状态标记 我的代码中使用的是2,3作为状态标记 2:标志着从0 -> 1 3:标志着从1 -> 0
效果
代码
int counter(int** board, int rows, int columns, int x, int y){
int count=0;
int t[]={-1,0,1};
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if((t[i]!=0 || t[j]!=0) && (x+t[i]>=0 && x+t[i]<rows) && (y+t[j]>=0 && y+t[j]<columns)){
count+=board[x+t[i]][y+t[j]]%2;
}
}
}
return count;
}
void gameOfLife(int** board, int boardSize, int* boardColSize){
int i,j,count;
for(i=0;i<boardSize;i++){
for(j=0;j<boardColSize[0];j++){
count=counter(board,boardSize,boardColSize[0],i,j);
if(board[i][j]==1 && (count<2 || count>3)) board[i][j]=3;
else if(board[i][j]==0 && count==3){board[i][j]=2;}
}
}
for(i=0;i<boardSize;i++){
for(j=0;j<boardColSize[0];j++){
if(board[i][j]==2) board[i][j]=1;
if(board[i][j]==3) board[i][j]=0;
}
}
}
|