用字串陣列作為井字遊戲的遊戲板 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 只允許放置在空位中,不允許對已放有字元的位置進行填充。當...