题目:
根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。

给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:

  • 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;
  • 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;
  • 如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;
  • 如果死细胞周围正好有三个活细胞,则该位置死细胞复活;
    下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 m x n 网格面板 board 的当前状态,返回下一个状态。



    思路:
  • 挨个遍历board中的每个格子,统计每个格子周边(相邻八个方向)的活细胞数量,判断格子是否发生变化。若发生变化,则对格子进行标记:(i)若当前格子为活细胞:2<=周边活细胞数量<=3,则当前格子不发生变化,否则发生变化。将发生变化的格子标记为2;(ii)若当前格子为死细胞:周边活细胞数量==3,则当前格子发生变化,否则不发生变化。将发生变化的格子标记为-1;
  • 再一次遍历board中的每个格子,将标记为2的格子替换为0(活细胞死亡);将标记为-1的格子替换为1(死细胞复活);

解答:

class Solution:def gameOfLife(self, board: List[List[int]]) -> None:"""Do not return anything, modify board in-place instead."""directions=[[-1,-1],[-1,0],[-1,1],[0,-1],[0,1],[1,-1],[1,0],[1,1]]#0若复活,将其先设定为-1;1若死掉将其设定为2m=len(board)n=len(board[0])def InArea(x,y):if 0<=x<m and 0<=y<n:return Truereturn Falsedef BFS(i,j,flag):#count:用于统计活细胞数量count=0for dx,dy in directions:x,y=i+dx,j+dyif not InArea(x,y):continueif board[x][y]>=1:count+=1#判断当前活细胞是否发生变化if flag==1:if count<2 or count>3:return Truereturn False#判断当前死细胞是否发生变化if flag==0:if count==3:return Truereturn False#对变化的细胞进行标记,死细胞发生变化标记为-1,活细胞发生变化标记为2for i in range(m):for j in range(n):if board[i][j]==0:if BFS(i,j,0):board[i][j]=-1else:if BFS(i,j,1):board[i][j]=2#对标记的细胞进行变换for i in range(m):for j in range(n):if board[i][j]==2:board[i][j]=0elif board[i][j]==-1:board[i][j]=1

【网格问题】leetcode289.生命游戏相关推荐

  1. Leetcode--289. 生命游戏

    根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机. 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞.每个细胞具有一个初始状态 liv ...

  2. [Swift]LeetCode289. 生命游戏 | Game of Life

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  3. leetCode-289. 生命游戏

    题目: 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞.每个细胞都具有一 ...

  4. 康威生命游戏是如何搭建计算机的?

    2020年4月,数学家约翰·康威(John H. Conway)因新冠肺炎去世.大家回顾康威教授平生贡献时,不可避免要提到伟大.深刻的"康威生命游戏"(Conway's Game ...

  5. 复杂性思维中文第二版 六、生命游戏

    六.生命游戏 原文:Chapter 6 Game of Life 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 在本章中,我们考虑二维细胞自动机,特别是 John Conway ...

  6. Conway生命游戏

    生命游戏建立在9个方格的网格中,每个细胞有8个相邻细胞. 游戏有三个规则: 1. 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则 ...

  7. Python - 康威生命游戏Conway's game of life

    使用python实现康威生命游戏Conway's game of life 参考<python极客项目编程> 游戏规则: 任何四周邻居存活数少于两个的存活网格将死亡,因为人口稀少. 任何四 ...

  8. 用pygame做一个简单的python小游戏---生命游戏

    用pygame做一个简单的python小游戏-生命游戏 生命游戏(Game of Life) 生命游戏(Game of Life)是剑桥大学约翰·何顿·康威(John Horton Conway)教授 ...

  9. 力扣题:生命游戏解题(未考虑内存消耗)

    题目: 根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞.每个细胞 ...

最新文章

  1. 如何读取比机器内存大的文件(内存4G,文件 8G,读取大文件) ?
  2. 你训练的神经网络不对头的37个原因
  3. 如何实现更换Jupyter Notebook内核Python版本
  4. 赛迪研究院发布《2018年中国自动驾驶产业发展及投资价值白皮书》!
  5. POJ 1251 Jungle Roads
  6. [Winform]默认以管理员身份运行程序
  7. 【Tiny4412】Tiny4412烧写uboot脚本分析
  8. JavaScript中的定时器
  9. Openstack平台搭建之第二天
  10. A simple Android example,including Intent/View/...
  11. SoapUI5.1.2安装和破解教程
  12. vue项目 echarts 中国地图,vue项目 echarts中国地图点击省份显示对应它的各个市,从零开始。
  13. 【高电复习3】频谱的线性搬移、振幅调制、解调、混频
  14. Intel CPU发展史
  15. demonstration记忆_单词记忆法
  16. 泛微OA-测试机更改sysadmin密码为1
  17. LODOP打印,首次打印时,图片加载不出来、加载不完全问题
  18. VS报错之混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。...
  19. 画廊效果的ViewPager实现(附带无限自动轮播)
  20. vue-element-admin/template+tornado(pyrestful)前后端分离框架实践(1)——自定义菜单和仪表盘

热门文章

  1. 京东商品主图怎么保存?如何正确的保存到原图?
  2. excel表格拆分成多个工作表
  3. 2021华数杯数学建模选题建议
  4. golang gin 服务器部署
  5. 金誉半导体:MOS管耗尽型和增强型是什么意思?
  6. vue实现页面刷新以及局部刷新的方法
  7. 阿里巴巴编码规范解读(五)-MySQL数据库
  8. php显示2038年,PHP转换超过2038年日期出错如何解决
  9. P2655 2038年问题
  10. Live555本地保存H264/PCM视频音频帧附加SPS/PPS