game of life
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 ;
} }
};
随机推荐
- 项目重新部署后报The attribute required is undefined for the annotation type XmlElementRef
在另外一台机器上部署项目,项目导进Eclipse中发现有异常 public class BooleanFeatureType extends FeatureBaseType{ @XmlElementR ...
- saltstack故障解决
[root@saltstack_s ~]# salt '*' test.pingSalt request timed out. The master is not responding. If thi ...
- AngularJs赋值问题
$scope.showUpgradeForm = function(item){ $scope.upgrade = item; $scope.upgrade.vercode++; // 其它操作 } ...
- Python模块(json)
json json模块,用来处理json风格的数据 一.json的数据格式 json是javascripts的标准格式,json的格式是由若干个 键/值(key,values) 对的集合,该集合可以理 ...
- Visual Studio 2013发布网站
- JS函数(获得widn)
//随机数生成器Math.random() 日期时间函数(需要用变量调用):var b = new Date(); //获取当前时间b.getTime() //获取时间戳b.getFullYear() ...
- git提交
1.git pull 本地已经commit 2.git checkout master 3.git pull 4.git checkout - 5.git merge master 6.git pus ...
- bash 截取字符串
转载自http://blog.chinaunix.net/uid-1757778-id-3162034.html 命令的2种替换形式 $()和 ``示例:截断字符串 a): #截取文件名称 ...
- Leetcode: Remove K Digits
Given a non-negative integer num represented as a string, remove k digits from the number so that th ...
- VS2012离线安装Xamarin (含破解补丁)
Xamarin离线安装包 来源于 忘忧草 特此感谢! 离线安装不成功:参考源 http://www.cnblogs.com/zjoch/p/3937014.html / http://www.cnb ...