牛客网链接: link.
这是一道考察二维数组的题目。

解题思路:
- 在这里不要局限的固定思维,这个棋盘是3*3的,一开始可能认为要判断横竖或者斜位置上是否三个值相同,这种思维是不可取的。首先题目要求只要是当前玩家赢就返回true,所以不要考虑对方玩家。

class Board {
public:
bool checkWon(vector<vector<int> > board) {
// write code here
//不要想着去判断行或者列是否三个值都相等的情况,而是转换一下思路,用相加的方法来判断
int row = board.size();
int col = board[0].size();
//一行的数据都相同
for(int i = 0;i<row;++i)
{
int sum = 0;
for(int j = 0;j<col;++j)
{
sum += board[i][j];
}
if(sum == col)
{
return true;
}
}
//一列的数据都相同 列不变,行一直要改变
for(int i = 0;i<col;++i)
{
int sum = 0;
for(int j = 0;j<row;++j)
{
sum += board[j][i];
}
if(sum == row)
{
return true;
}
}
//正斜的数据都相同
int sum = 0;
for(int i = 0;i<row;++i)
{
sum += board[i][i];
}
if(sum == row)
{
return true;
}
//副斜的数据都相同
sum = 0;
for(int i = 0;i<row;++i)
{
sum += board[i][col-1-i];
}
if(sum == row)
{
return true;
}
return false;
}
};

该博客讨论了一种3x3棋盘游戏的获胜条件判断问题。解题思路强调了不应局限于传统的横竖斜线判断,而是通过计算每行、每列、主对角线和副对角线的数值总和来确定是否获胜。代码实现中检查了所有可能的获胜情况,并返回了相应的结果。

被折叠的 条评论
为什么被折叠?



