class Solution {
public:
void gameOfLife(vector<vector<int>>& board) {
queue<int> temp_state;
int row = board.size();
int i,j;
if(row < ) return;
int col = board[].size();
if(col <) return;
for(i=;i<row;i++)
for(j=;j<col;j++){
int state_i_j = next_state(board,i,j);
temp_state.push(state_i_j);
if((j == col-)) { //每行最后一个元素 更新
if((i>=)){ //如果不是第一行,更新前一行
for(int z=;z<col;z++){
board[i-][z] = temp_state.front();
temp_state.pop();
}
}
if((i==row-)){ //如果是最后一行,更新当前行
for(int z=;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 = ; int row = board.size();
int col = board[].size(); if(board[i][j] == ){
if(i- >=){
if(j->= && board[i-][j-] == ) sum++;
if(board[i-][j] == ) sum++;
if(j+<col && board[i-][j+] == ) sum++;
}
if(i+ < row){
if(j->= && board[i+][j-] == ) sum++;
if(board[i+][j] == ) sum++;
if(j+<col && board[i+][j+] == ) sum++;
}
if(j->= && board[i][j-] == ) sum++;
if(j+< col && board[i][j+] == ) sum++;
if(sum== || sum ==) return ;
return ;
} if(board[i][j] == ){
if(i- >=){
if(j->= && board[i-][j-] == ) sum++;
if(board[i-][j] == ) sum++;
if(j+<col && board[i-][j+] == ) sum++;
}
if(i+ < row){
if(j->= && board[i+][j-] == ) sum++;
if(board[i+][j] == ) sum++;
if(j+<col && board[i+][j+] == ) sum++;
}
if(j->= && board[i][j-] == ) sum++;
if(j+< col && board[i][j+] == ) sum++;
if(sum ==) return ;
return ;
} }
};

随机推荐

  1. mkdir

    1,mkdir Problem: You want to use the mkdir() function from the sys/stat.h POSIX header, but you don’ ...

  2. 奥威Power-BI V11——凤凰涅槃,重磅来袭

    时隔一年,奥威Power-BI重磅再推新版,在之前V10 WEB可视化前端分析工具基础上,更加注重用户体验这一块.V11站在用户的角度,以用户的视野去设计研发新版本,最终在前端框架的优化.移动设备的体 ...

  3. T4教程1 T4模版引擎之基础入门

    T4模版引擎之基础入门   额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又在背后默默无闻的奉献着,直到现在我们项目组的人除了我之外,其它人还是对其豪无兴趣,基本上是连看一眼都懒得看 ...

  4. Java 继承 执行顺序

    代码: package com.company; public class Main { public static void main(String[] args) { new MyClass(); ...

  5. JAVA-语法-运算符

    1.赋值运算符  =  (优先级较低) 2.算数运算符  +  —  *  /  % 3.字符串连接运算   +  (把其他类型转成字符串并和字符串类型进行连接) 4.扩展赋值运算符   +=   — ...

  6. ORACLE数据库创建用户名和表空间

    [sql] /*第1步:登录  */  以sys/sys超级用户登录pl/sql      /*第2步:创建临时表空间  */  create temporary tablespace user_te ...

  7. acm算法模板(2)

    数学问题: 1.精度计算——大数阶乘 2.精度计算——乘法(大数乘小数) 3.精度计算——乘法(大数乘大数) 4.精度计算——加法 5.精度计算——减法 6.任意进制转换 7.最大公约数.最小公倍数 ...

  8. Linux MD5值递归比对目录中的文件是否有修改

    项目上今天遇到检查两个版本的发布包rc1.tar.gz和rc2.tar.gz的一致性,解决方法做个总结,步骤如下 1. 建立文件夹 mkdir test_rc1 test_rc2 2. 文件解压缩 t ...

  9. oracle,sqlserver,mysql 命令行 开启、关闭所需要的服务

    ORACLE需要开启的服务   需要启动的服务:   口令: 启动Oracle 11g服务: (下面的可以作为bat 脚本,直接运行便可以不用去自己去启动和关闭服务了.) @echo off @ EC ...

  10. java中Date的getTime() 方法奇葩问题

    今天遇到了一个奇葩问题: 从数据库中读取了3个Date类型的数据: DATE1:2015-03-12 12:10:42 DATE2:2015-03-12 12:04:40 DATE3:2015-03- ...