井字棋
题目描述
对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。
给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋子。
测试样例:
[[1,0,1],[1,-1,-1],[1,-1,0]]
返回:true
//扩展到N阶的棋盘同样适用;
class Board {
public:
bool checkWon(vector<vector<int> > board) {
// write code here
int len=board.size();
//检查行
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[j][i];
if(sum==len)
return true;
}
//检查主对角线
int temp=0;
for(int i=0;i<len;i++)
{
temp+=board[i][i];
}
if(temp==len) return true;
//检查副对角线
temp=0;
for(int i=0;i<len;i++)
{
temp+=board[i][len-i-1];
}
if(temp==len) return true;
return false;
}
};
<stron>:井字棋</stron>