模拟 + 染色
- 思路:
- 可以复制一个表格,然后根据规则两层循环模拟出结果,但是空间复杂度太高;
- 可以复用原有数组,对其进行染色标记;
- 最终状态是活的标记值 > 1,还原标记值时可以使用规则 val > 0;
- 之前是活的现在是死的,标记成 -1,统计活细胞时可以使用规则 abs(val) = 1;
- 根据规则归纳:
- R1:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡,状态由 live 变成 die,用 -1 标记;(原状态是 live,需要被统计成活细胞)
- R2:如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活,状态没有发生变化;
- R3:如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡,状态由 live 变成 die,用 -1 标记;(原状态是 live,需要被统计成活细胞)
- R4:如果死细胞周围正好有三个活细胞,则该位置死细胞复活,状态由 die 变成 live,用 2 标记;(最终状态是 live)
- 进行两次两重循环遍历:
- 第一次进行染色;
- 第二次染色还原;