井字棋

Posted 修修55

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了井字棋相关的知识,希望对你有一定的参考价值。

题目描述

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

给定一个二维数组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;
    }
};

 

以上是关于井字棋的主要内容,如果未能解决你的问题,请参考以下文章

(教你简单地C语言黑框框三子棋(井字棋)

react入门学习:井字棋游戏(官方文档教程)

react入门学习:井字棋游戏(官方文档教程)

C++ 井字棋

功能完备的井字棋——基于css3和vue

C语言小项目——井字棋游戏(升级版)