【牛客网】井字棋

匿名 (未验证) 提交于 2019-12-02 23:36:01

题目描述

对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。
给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代 表是对方玩家的棋子。

测试样例:

[[1,0,1],[1,-1,-1],[1,-1,0]]
返回:true

解题思路

井字棋有四种情况表示当前玩家获胜,1代表当前玩家棋子 1. 行全为1, 即行的和为3 2. 列全为1, 列的和为 3 3. 主对角全为1, 对角和为3 4. 副对角全为1, 对角和为3 5. 如果扩展为N*N的话,判断和是否等于N,下 面代码适用任何情况

完整代码

class Board { public:     bool checkWon(vector<vector<int> > board) {         if((board[0][0]+board[1][1]+board[2][2])==3)  //正对角线             return true;         if((board[0][2]+board[1][1]+board[2][0])==3)   //反对角线             return true;          for(int i=0;i<3;i++)         {             int a=0;             int b=0;             for(int j=0;j<3;j++)             {                 a+=board[i][j];      //行                 b+=board[j][i];      //列             }             if(a==3)                 return true;             if(b==3)                 return true;         }         return false;     } };
转载请标明出处:【牛客网】井字棋
文章来源: https://blog.csdn.net/ly_6699/article/details/90742053
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!