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 ;
}
}
};
随机推荐
- ChatForFun 公众号使用说明
使用方法 2016-07-16 DennisMi ChatForFun 1,发送 #1 实现登陆,或者退出登陆 2,发送 #2 实现加入聊天,和退出聊天 3,聊天开始后,可以直接发送消息 4,如果 ...
- RFS_关键字
1. 关键字的参数中能带变量 [示例]: [运行结果]: 2. 关键字的参数中不能带关键字 [示例]: [运行结果]: 其他: (1) 关键字可以理解为高级语言中的“函数”
- python_文件
1. 打开文件 (1) open(name[, mode[, buffering]]) 功能:打开文件或者新建一个文件 参数说明: mode: "r" : 读模式(默认) &q ...
- Perl Debug error: SetConsoleMode failed, LastError=|6|
Windows Strawberry Perl. 解决办法: 1. 设置环境变量 TERM = dumb 2. 重启 CMD 参考资料: http://padre.perlide.org/trac/t ...
- 使用Fiddler对android应用抓包
工作原理 先上个图 此图一目了然,可以看出fiddler在请求中所处的位置,我们就可以确定它能干些什么. 它实际工作在本机的8888端口http代理,我们启动fiddler时,它会自动更改代理设置: ...
- Java基础之一组有用的类——使用比较器对数组排序(TrySortingWithComparator)
控制台程序. Arrays类中的sort()静态方法把传送为参数的数组元素按升序方式排序. 对于第一个参数类型是Object[]的sort()方法来说,可以传送任意类型的数组.如果使用sort()方法 ...
- GTA项目 三, 使用 bootstrap table展示界面,使得data和UI分离
/** bootstrap-table - v1.5.0 - 2014-12-12* https://github.com/wenzhixin/bootstrap-table* Copyright ( ...
- 转:python webdriver API 之alert/confirm/prompt 处理
webdriver 中处理 JavaScript 所生成的 alert.confirm 以及 prompt 是很简单的.具体思路是使用switch_to.alert()方法定位到 alert/conf ...
- 转:python webdriver API 之层级定位
在实际的项目测试中,经常会有这样的需求:页面上有很多个属性基本相同的元素 ,现在需要具体定位到其中的一个.由于属性基本相当,所以在定位的时候会有些麻烦,这时候就需要用到层级定位.先定位父元素,然后再通 ...
- HDU 1052 Tian Ji -- The Horse Racing(贪心)(2004 Asia Regional Shanghai)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1052 Problem Description Here is a famous story in Ch ...