Skip to content

Latest commit

 

History

History
24 lines (16 loc) · 1.4 KB

readme.md

File metadata and controls

24 lines (16 loc) · 1.4 KB

me of Life (Medium)

链接

题目:https://leetcode.com/problems/game-of-life/
代码(github):https://github.com/illuz/leetcode

题意

康威生命游戏的规则是:

  1. 当前细胞为存活状态时,当周围低于2个(不包含2个)存活细胞时, 该细胞变成死亡状态。(模拟生命数量稀少)
  2. 当前细胞为存活状态时,当周围有2个或3个存活细胞时, 该细胞保持原样。
  3. 当前细胞为存活状态时,当周围有3个以上的存活细胞时,该细胞变成死亡状态。(模拟生命数量过多)
  4. 当前细胞为死亡状态时,当周围有3个存活细胞时,该细胞变成存活状态。 (模拟繁殖)

给出一个状态,求这个游戏的下个状态。

分析

模拟起来并不难,算一下周围的黑点就行了。
问题是要不开辟多余的空间来做,也就是说要在地图上直接搞。那就要处理一个问题了,就是计算总是有前后的,你不能同时算出所有的点,所以你要怎么既保存原来的状态(为了之后的计算用),又保存新的状态。
这里的状态只有 0 和 1,用一个 int 保存两个 0/1 状态不是很轻松吗,只要用两位就能保存下来了。

问题是如果题目给的不是 int 型的,而是 bool 型的,那这题就不好做了。