题目描述
对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。
给定一个二维数组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