博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-Game of Life-289
阅读量:5238 次
发布时间:2019-06-14

本文共 973 字,大约阅读时间需要 3 分钟。

生态系统游戏,输入一个01矩阵,0代表死了,1代表活着,这是当前状态,求下一个状态:

1.当前格子活的:

  1)周围活着的格子<2或者>3,则当前格子死

  2)否则当前格子保持

2.当前格子死:

  1)周围活着的格子==3,则当前格子活

  2)否则当前格子保持

周围格子是指周围8个

 

如果不要求空间可以重新申请一个矩阵,遍历当前矩阵然后把结果放在新申请的矩阵

要求空间O1,则这里用到一个技巧,其实不算位运算,不过也算利用了二进制位:

一个格子无非四种状态,用0,1,2,3保存,即保存了转换后的状态又保存了转换前状态:

0:dead->dead

3:dead->live

1:live->live

2:live->dead

最后再遍历一遍矩阵,所有格子&1即可

1 class Solution { 2 public: 3     int get(vector
> v,int i,int j){ 4 int d[8][2]={
{-1,0},{
1,0},{
0,-1},{
0,1},{-1,-1},{
1,1},{-1,1},{
1,-1}}; 5 int cnt=0; 6 for(int k=0;k<8;k++){ 7 int x=i+d[k][0]; 8 int y=j+d[k][1]; 9 if(x>=0&&x
=0&&y
>& board) {14 int len=board.size();15 if(len==0) return;16 int n=board[0].size();17 for(int i=0;i
3) board[i][j]=2;22 else board[i][j]=1;23 }24 else{25 if(cnt==3) board[i][j]=3;26 else board[i][j]=0;27 }28 }29 }30 for(int i=0;i

 

转载于:https://www.cnblogs.com/0summer/p/5831572.html

你可能感兴趣的文章
最高的奖励 - 优先队列&贪心 / 并查集
查看>>
STL顺序容器总结
查看>>
adb常用命令
查看>>
网络分层
查看>>
用Spring构建一个RESTful Web Service
查看>>
Mathematica Memo 01
查看>>
第三章 2D Rendering Input Layout
查看>>
【python】读取和输出到txt
查看>>
SCIM不能输入中文
查看>>
[Codeforces 961G]Partitions
查看>>
[CODEVS 1288]埃及分数
查看>>
经典排序算法——快速排序
查看>>
CS:APP 05 笔记
查看>>
C#委托的介绍(delegate、Action、Func、predicate)
查看>>
wpf 控件添加背景图片
查看>>
挑战程序设计竞赛 2.1 最基础的“穷竭搜索”
查看>>
BZOJ 4027:[HEOI2015]兔子与樱花(贪心+树形DP)
查看>>
第十一周工作总结
查看>>
java io经典代码
查看>>
Linux 常用命令
查看>>