对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。
给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋。、
我的思想是,先判断一列的元素,再判断一行的元素,最好判断斜着的一行的元素。
代码如下:
class Board {
public:
bool checkWon(vector<vector<int> > board) {
int k=0;
for(int i=0;i<3;i++)
{
if(board[i][0]==1&&board[i][1]==1&&board[i][2]==1)//判断一列
{
k=1;
}
if(board[0][i]==1&&board[1][i]==1&&board[2][i]==1)//判断一行
{
k=1;
}
}
for(int i=0;i<3;i++)//判断斜行
{
if(board[i][i]==1)
{
}
else
{
break;
}
if(i==2)
{
k=1;
}
}
for(int i=0;i<3;i++)//判断斜行
{
if(board[i][2-i]==1)
{
}
else
{
break;
}
if(i==2)
{
k=1;
}
}
if(k==1)
{
return true;
}
else
{
return false;
}
}
};