請在 n × n 的棋盤上,實現乙個判定井字棋(tic-tac-toe)勝負的神器,判斷每一次玩家落子後,是否有勝出的玩家。
在這個井字棋遊戲中,會有 2 名玩家,他們將輪流在棋盤上放置自己的棋子。
在實現這個判定器的過程中,你可以假設以下這些規則一定成立:
每一步棋都是在棋盤內的,並且只能被放置在乙個空的格仔裡;
一旦遊戲中有一名玩家勝出的話,遊戲將不能再繼續;
乙個玩家如果在同一行、同一列或者同一斜對角線上都放置了自己的棋子,那麼他便獲得勝利。
示例:
給定棋盤邊長 n =
3, 玩家 1 的棋子符號是 "x",玩家 2 的棋子符號是 "o"。
tictactoe toe =
newtictactoe(3
);toe.
move(0
,0,1
);-> 函式返回 0
(此時,暫時沒有玩家贏得這場對決)
|x||||
|||// 玩家 1 在 (0, 0) 落子。||
||toe.
move(0
,2,2
);-> 函式返回 0
(暫時沒有玩家贏得本場比賽)
|x||o|||
||// 玩家 2 在 (0, 2) 落子。||
||toe.
move(2
,2,1
);-> 函式返回 0
(暫時沒有玩家贏得比賽)
|x||o|||
||// 玩家 1 在 (2, 2) 落子。||
|x|toe.
move(1
,1,2
);-> 函式返回 0
(暫沒有玩家贏得比賽)
|x||o|
||o|
|// 玩家 2 在 (1, 1) 落子。||
|x|toe.
move(2
,0,1
);-> 函式返回 0
(暫無玩家贏得比賽)
|x||o|
||o|
|// 玩家 1 在 (2, 0) 落子。
|x||x|
toe.
move(1
,0,2
);-> 函式返回 0
(沒有玩家贏得比賽)
|x||o|
|o|o|
|// 玩家 2 在 (1, 0) 落子.
|x||x|
toe.
move(2
,1,1
);-> 函式返回 1
(此時,玩家 1 贏得了該場比賽)
|x||o|
|o|o|
|// 玩家 1 在 (2, 1) 落子。
|x|x|x|
c++記錄數目即可
class
tictactoe
intmove
(int row,
int col,
int player)
if(row + col == length-1)
}else
if(row + col == length-1)
}if(abs
(r[row]
)== length ||
abs(c[col]
)== length||
abs(s[0]
)== length ||
abs(s[1]
)== length)
else
}private
: vector<
int> r;
vector<
int> c;
vector<
int> s;
int length;};
/** * your tictactoe object will be instantiated and called as such:
* tictactoe* obj = new tictactoe(n);
* int param_1 = obj->move(row,col,player);
*/
LeetCode 348 判定井字棋勝負(計數)
請在 n n 的棋盤上,實現乙個判定井字棋 tic tac toe 勝負的神器,判斷每一次玩家落子後,是否有勝出的玩家。在這個井字棋遊戲中,會有 2 名玩家,他們將輪流在棋盤上放置自己的棋子。在實現這個判定器的過程中,你可以假設以下這些規則一定成立 1 每一步棋都是在棋盤內的,並且只能被放置在乙個空...
348 判定井字棋勝負
請在 n n 的棋盤上,實現乙個判定井字棋 tic tac toe 勝負的神器,判斷每一次玩家落子後,是否有勝出的玩家。在這個井字棋遊戲中,會有 2 名玩家,他們將輪流在棋盤上放置自己的棋子。在實現這個判定器的過程中,你可以假設以下這些規則一定成立 1.每一步棋都是在棋盤內的,並且只能被放置在乙個空...
leetcode 井字遊戲
設計乙個演算法,判斷玩家是否贏了井字遊戲。輸入是乙個 n x n 的陣列棋盤,由字元 x 和 o 組成,其中字元 代表乙個空位。以下是井字遊戲的規則 玩家輪流將字元放入空位 中。第乙個玩家總是放字元 o 且第二個玩家總是放字元 x x 和 o 只允許放置在空位中,不允許對已放有字元的位置進行填充。當...