LeetCode 有效的井字遊戲(測試灰常豐富!)

2021-09-22 18:03:37 字數 2995 閱讀 7976

用字串陣列作為井字遊戲的遊戲板 board。當且僅當在井字遊戲過程中,玩家有可能將字元放置成遊戲板所顯示的狀態時,才返回 true。

該遊戲板是乙個 3 x 3 陣列,由字元 " ",「x」 和 「o」 組成。字元 " " 代表乙個空位。

以下是井字遊戲的規則:

玩家輪流將字元放入空位(" ")中。

第乙個玩家總是放字元 「x」,且第二個玩家總是放字元 「o」。

「x」 和 「o」 只允許放置在空位中,不允許對已放有字元的位置進行填充。

當有 3 個相同(且非空)的字元填充任何行、列或對角線時,遊戲結束。

當所有位置非空時,也算為遊戲結束。

如果遊戲結束,玩家不允許再放置字元。

示例 1:

輸入: board = ["o  ", "   ", "   "]

輸出: false

解釋: 第乙個玩家總是放置「x」。

示例 2:

輸入: board = ["xox", " x ", "   "]

輸出: false

解釋: 玩家應該是輪流放置的。

示例 3:

輸入: board = ["***", "   ", "ooo"]

輸出: false

示例 4:

輸入: board = ["xox", "o o", "xox"]

輸出: true

說明:

遊戲板 board 是長度為 3 的字串陣列,其中每個字串 board[i] 的長度為 3。

board[i][j] 是集合 中的乙個字元。

思路分

析:\color

思路分析

:注意這道題的意思是要我們判斷board這個狀態是否合法,即不能出現兩個人同時贏,或者一些其他情況,而不是判斷是贏的問題!!!對於判斷的情況數非常多,詳細介紹請見**注釋。

class

solution

else

if(board[i]

[j]==

'o')}}

//因為『x』是先手,『o』是後手,所以『x』的個數必須大於等於『o』的個數,並且不能超過1個

if(ocount > xcount || xcount > ocount +1)

//第二步:行掃瞄,xrowwincount代表x在行能贏的個數,orowwincount代表o在行能贏的個數

int xrowwincount =

0, orowwincount =0;

vector<

int>

xrowwin(3

,0),

orowwin(3

,0);

//分別代表各行是否能贏

for(

int i =

0; i <3;

++i)

else

if(board[i]

=="ooo")}

//行中贏的個數必須是當個,並且只有有乙個能贏

if(xrowwincount * orowwincount >

0|| xrowwincount >

1|| orowwincount >1)

//第三步:列掃瞄,xcolwincount代表x在列能贏的個數,ocolwincount代表o在列能贏的個數

int xcolwincount =

0, ocolwincount =0;

vector<

int>

xcolwin(3

,0),

ocolwin(3

,0);

//分別代表各列是否能贏

for(

int col =

0; col <3;

++col)

else

if(board[0]

[col]

=='o')}

}//列中贏的個數必須是當個,並且只有有乙個能贏

if(xcolwincount * ocolwincount >

0|| xcolwincount >

1|| ocolwincount >1)

//第四步:左對角線掃瞄,xleftwin代表x在左對角線是否能贏,oleftwin代表o在左對角線是否能贏

int xleftwin =

0, oleftwin =0;

if(board[0]

[0]== board[1]

[1]&& board[0]

[0]== board[2]

[2])

}else

if(board[1]

[1]==

'o')}}

//第五步:右對角線掃瞄,xrightwin代表x在右對角線是否能贏,orightwin代表o在右對角線是否能贏

都是淚。。。

雖說**比較長,蛋式思路還是非常清晰的。

LeetCode有效的井字遊戲python

class solution object defvalidtictactoe self,board type board list str rtype bool first,second xo xnum sum row.count first for row in board onum sum r...

有效的井字遊戲

問題描述 用字串陣列作為井字遊戲的遊戲板 board。當且僅當在井字遊戲過程中,玩家有可能將字元放置成遊戲板所顯示的狀態時,才返回 true。該遊戲板是乙個 3 x 3 陣列,由字元 x 和 o 組成。字元 代表乙個空位。以下是井字遊戲的規則 玩輪流將字元放入空位 中。第乙個玩家總是放字元 x 且第...

leetcode 井字遊戲

設計乙個演算法,判斷玩家是否贏了井字遊戲。輸入是乙個 n x n 的陣列棋盤,由字元 x 和 o 組成,其中字元 代表乙個空位。以下是井字遊戲的規則 玩家輪流將字元放入空位 中。第乙個玩家總是放字元 o 且第二個玩家總是放字元 x x 和 o 只允許放置在空位中,不允許對已放有字元的位置進行填充。當...