game of life
2015-10-24 16:36
190 查看
class Solution { public: void gameOfLife(vector<vector<int>>& board) { queue<int> temp_state; int row = board.size(); int i,j; if(row < 1) return; int col = board[0].size(); if(col <1) return; for(i=0;i<row;i++) for(j=0;j<col;j++){ int state_i_j = next_state(board,i,j); temp_state.push(state_i_j); if((j == col-1)) { //每行最后一个元素 更新 if((i>=1)){ //如果不是第一行,更新前一行 for(int z=0;z<col;z++){ board[i-1][z] = temp_state.front(); temp_state.pop(); } } if((i==row-1)){ //如果是最后一行,更新当前行 for(int z=0;z<col;z++){ board[i][z] = temp_state.front(); temp_state.pop(); } } } } } int next_state(vector<vector<int>>& board,int i,int j){ int sum = 0; int row = board.size(); int col = board[0].size(); if(board[i][j] == 1){ if(i-1 >=0){ if(j-1>=0 && board[i-1][j-1] == 1) sum++; if(board[i-1][j] == 1) sum++; if(j+1<col && board[i-1][j+1] == 1) sum++; } if(i+1 < row){ if(j-1>=0 && board[i+1][j-1] == 1) sum++; if(board[i+1][j] == 1) sum++; if(j+1<col && board[i+1][j+1] == 1) sum++; } if(j-1>=0 && board[i][j-1] == 1) sum++; if(j+1< col && board[i][j+1] == 1) sum++; if(sum==2 || sum ==3) return 1; return 0; } if(board[i][j] == 0){ if(i-1 >=0){ if(j-1>=0 && board[i-1][j-1] == 1) sum++; if(board[i-1][j] == 1) sum++; if(j+1<col && board[i-1][j+1] == 1) sum++; } if(i+1 < row){ if(j-1>=0 && board[i+1][j-1] == 1) sum++; if(board[i+1][j] == 1) sum++; if(j+1<col && board[i+1][j+1] == 1) sum++; } if(j-1>=0 && board[i][j-1] == 1) sum++; if(j+1< col && board[i][j+1] == 1) sum++; if(sum ==3) return 1; return 0; } } };
相关文章推荐
- 神牛笔记:吉林大学ACM总结(fennec)
- JavaScript异步加载浅析
- 设计师必备的html工具
- CSS层叠样式表
- 使用jquery动态加载Js文件和Css文件
- JavaScript中数组的合并以及排序实现示例
- css3动画
- jsp中购物车的实现思路
- 三、jQuery--jQuery基础--jQuery基础课程--第1章 初识jQuery
- html页面例子
- bzoj3943【Usaco2015 Feb】SuperBull
- 使用javaScript动态加载Js文件和Css文件
- 何为js的语句声明
- jQuery中的DOM操作2
- a href=#与 a href=javascript:void(0) 的区别
- 使用CSS实现圆形头像的设计
- 【IT修真院】零基础到就业一个月系列之【CSS】篇
- js判断日期时间有效性的方法
- CSS伪类
- js判断ie 火狐 还是chrome浏览器