【LeetCode】 289. 生命游戏(c++暴力版)

class Solution {
public:
    void gameOfLife(vector<vector<int>>& board) {
        vector<vector<int>> result;
        for(int i=0;i<board.size();i++){
            vector<int> temp; //暂存一行
            for(int j=0;j<board[i].size();j++){
                if(board[i][j]==1){
                    int count=-1;
                    for(int m=0;m<3;m++){
                        for(int n=0;n<3;n++){
                            //计算活细胞的个数时要注意vector不要越界
                            if(i-1+m>=0 && i-1+m<board.size() && j-1+n>=0 && j-1+n<board[i].size() && board[i-1+m][j-1+n]==1){
                                count++;
                            }
                        }
                    }
                    if(count<2||count>3){
                        temp.push_back(0);
                    }
                    else{
                        temp.push_back(1);
                    }
                }
                else{
                    int count=0;
                    for(int m=0;m<3;m++){
                        for(int n=0;n<3;n++){
                            if(i-1+m>=0 && i-1+m<board.size() && j-1+n>=0 && j-1+n<board[i].size() && board[i-1+m][j-1+n]==1){
                                count++;
                            }
                        }
                    }
                    if(count==3){
                        temp.push_back(1);
                    }
                    else{
                        temp.push_back(0);
                    }
                }
            }
            result.push_back(temp);
        }
        for(int i=0;i<result.size();i++){
            for(int j=0;j<result[i].size();j++){
                board[i][j]=result[i][j];
            }
        }
    }
};

 

posted @ 2020-04-02 13:32  TO_BE_HEALING  阅读(273)  评论(0编辑  收藏  举报