348 判定井字棋勝負

2021-10-02 13:10:13 字數 1855 閱讀 6387

請在 n × n 的棋盤上,實現乙個判定井字棋(tic-tac-toe)勝負的神器,判斷每一次玩家落子後,是否有勝出的玩家。

在這個井字棋遊戲中,會有 2 名玩家,他們將輪流在棋盤上放置自己的棋子。

在實現這個判定器的過程中,你可以假設以下這些規則一定成立:

1. 每一步棋都是在棋盤內的,並且只能被放置在乙個空的格仔裡;

2. 一旦遊戲中有一名玩家勝出的話,遊戲將不能再繼續;

3. 乙個玩家如果在同一行、同一列或者同一斜對角線上都放置了自己的棋子,那麼他便獲得勝利。

示例:給定棋盤邊長 n = 3, 玩家 1 的棋子符號是 "x",玩家 2 的棋子符號是 "o"。

tictactoe toe = new tictactoe(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|

高階:您有沒有可能將每一步的 move() 操作優化到比 o(n2) 更快嗎?

class tictactoe 

/** player makes a move at (, ).

@param row the row of the board.

@param col the column of the board.

@param player the player, can be either 1 or 2.

@return the current winning condition, can be either:

0: no one wins.

1: player 1 wins.

2: player 2 wins. */

int move(int row, int col, int player)

};/**

* 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 名玩家,他們將輪流在棋盤上放置自己的棋子。在實現這個判定器的過程中,你可以假設以下這些規則一定成立 每一步棋都是在棋盤內的,並且只能被放置在乙個空的格...

LeetCode 348 判定井字棋勝負(計數)

請在 n n 的棋盤上,實現乙個判定井字棋 tic tac toe 勝負的神器,判斷每一次玩家落子後,是否有勝出的玩家。在這個井字棋遊戲中,會有 2 名玩家,他們將輪流在棋盤上放置自己的棋子。在實現這個判定器的過程中,你可以假設以下這些規則一定成立 1 每一步棋都是在棋盤內的,並且只能被放置在乙個空...

python井字棋 用python井字棋

上篇文章 python 井字棋 文本版 上 電腦端下棋策略是隨機的,有哪些位置可下棋,就隨機選擇乙個位置 實際中是不存這麼傻的對手的,賦予電腦乙個正常的智商還是很有必要的 至少當對手下一步要贏了,我們應該馬上堵住哪個位置 如果電腦自己能贏了,那就應該下能夠贏的位置 如果雙方都贏不了,那就找乙個比較好...