289. 生命游戏
Posted 潜行前行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了289. 生命游戏相关的知识,希望对你有一定的参考价值。
- 生命游戏
根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。
给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:
如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;
如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;
如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;
如果死细胞周围正好有三个活细胞,则该位置死细胞复活;
下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 m x n 网格面板 board 的当前状态,返回下一个状态。
关键点
- 使用其他数字先标志,再改回来
class Solution
public void gameOfLife(int[][] board)
int[] neightbors = 0,1,-1;
int rows = board.length;
int colums = board[0].length;
for(int row = 0;row < rows; row++)
for(int col = 0;col < colums;col++)
int lives = 0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if( i!=0 || j!=0 )
int r = row + neightbors[i];
int c = col + neightbors[j];
if( r < rows && r>=0 && c <colums && c >=0 && Math.abs(board[r][c]) == 1 )
lives++;
if(board[row][col] == 1 && ( lives < 2 || lives > 3 ))
board[row][col] = -1;
if(board[row][col] == 0 && lives == 3)
board[row][col] = 2;
for(int row = 0;row <rows; row++)
for(int col = 0;col < colums;col++)
if(board[row][col] > 1)
board[row][col] = 1;
else if(board[row][col] < 0)
board[row][col] = 0;
创作打卡挑战赛
赢取流量/现金/CSDN周边激励大奖
以上是关于289. 生命游戏的主要内容,如果未能解决你的问题,请参考以下文章
2021-11-02:生命游戏。根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个