井字棋

题目描述

对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。

给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋子。

测试样例:
[[1,0,1],[1,-1,-1],[1,-1,0]]
返回:true

//判断每行每列每个对角线上的值是否都为1
class Board {
public:
    bool checkWon(vector<vector<int> > board) {
        
        int len = board.size();
        //判断对角线
        int tmp = 0;
        for(int i = 0;i < len;i++){
            tmp += board[i][i];
        }
        if(tmp == len)
            return true;
        
        //判断对角线
        for(int i = 0;i < len;i++){
            tmp += board[i][len-i-1];
        }
        if(tmp == len)
            return true;
        
        //判断行
        for(int i = 0;i < len;i++){
            int sum = 0;
            for(int j = 0;j <len;j++)
                sum += board[i][j];
            if(sum == len)
                return true;
        }
        
        //判断列
        for(int i = 0;i < len;i++){
            int sum = 0;
            for(int j = 0;j < len;j++)
                sum += board[i][j];   
            if(sum == len)
                return true;
        }
        
        return false;
    }
};

 

posted on 2017-04-22 01:34  123_123  阅读(288)  评论(0编辑  收藏  举报