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