題目描述:
a 和 b 在乙個 3 x 3 的網格上玩井字棋。
井字棋遊戲的規則如下:
玩家輪流將棋子放在空方格 (" ") 上。
第乙個玩家 a 總是用 「x」 作為棋子,而第二個玩家 b 總是用 「o」 作為棋子。
「x」 和 「o」 只能放在空方格中,而不能放在已經被占用的方格上。
只要有 3 個相同的(非空)棋子排成一條直線(行、列、對角線)時,遊戲結束。
如果所有方塊都放滿棋子(不為空),遊戲也會結束。
遊戲結束後,棋子無法再進行任何移動。
給你乙個陣列 moves,其中每個元素是大小為 2 的另乙個陣列(元素分別對應網格的行和列),它按照 a 和 b 的行動順序(先 a 後 b)記錄了兩人各自的棋子位置。
如果遊戲存在獲勝者(a 或 b),就返回該遊戲的獲勝者;如果遊戲以平局結束,則返回 「draw」;如果仍會有行動(遊戲未結束),則返回 「pending」。
你可以假設 moves 都 有效(遵循井字棋規則),網格最初是空的,a 將先行動。
示例 1:
輸入:moves = [[0,0],[2,0],[1,1],[2,1],[2,2]]
輸出:「a」
解釋:「a」 獲勝,他總是先走。
"x " "x " "x " "x " "x "
" " -> " " -> " x " -> " x " -> " x "
" " "o " "o " "oo " 「oox」
示例 2:
輸入:moves = [[0,0],[1,1],[0,1],[0,2],[1,0],[2,0]]
輸出:「b」
解釋:「b」 獲勝。
"x " "x " "xx " 「xxo」 「xxo」 「xxo」
" " -> " o " -> " o " -> " o " -> "xo " -> "xo "
" " " " " " " " " " "o "
示例 3:
輸入:moves = [[0,0],[1,1],[2,0],[1,0],[1,2],[2,1],[0,1],[0,2],[2,2]]
輸出:「draw」
輸出:由於沒有辦法再行動,遊戲以平局結束。
「xxo」
「oox」
「xox」
示例 4:
輸入:moves = [[0,0],[1,1]]
輸出:「pending」
解釋:遊戲還沒有結束。
"x "
" o "
" "1 <= moves.length <= 9
moves[i].length == 2
0 <= moves[i][j] <= 2
moves 裡沒有重複的元素。
moves 遵循井字棋的規則。
方法1:
主要思路:
(1)定義乙個判斷新增動作後,新增動作是否可以決定勝負的函式;
(2)將動作分別對a,b兩個人使用,並判斷使用後的陣列是否可以確定勝負;
(3)對最後沒有決定勝負的情形進行判斷,判斷是否是平局即可;
class
solution}if
(i==3)
//行 i=0;
for(
;i<3;
++i)}if
(i==3)
//主對角線
if(row==col)}if
(i==3)
}//副對角線
if(row==
2-col)}if
(i==3)
}//還不能判斷勝負
return
false;}
string tictactoe
(vectorint>>
& moves)
}else
}++index;
}//是否是平局
if(moves.
size()
==9)return
"pending";}
};
1275 找出井字棋的獲勝者
解題思路 1.按照題目的意思,a b一定不會走已經走過的位置,所以遍歷陣列,由於遵守先a後b,所以偶數項就是a走的棋子,存入a陣列中,同時將a中的此點置為1,其他存入b陣列中 2.滿足獲勝的條件只有8種,分別是a或b的橫座標或縱座標相等的點,斜對角線上的點,由於a中各點一定不相等,所以滿足a獲勝的條...
返回獲勝者的分數
有一排正數,玩家a和玩家b都可以看到。每位玩家在拿走數字的時候,都只能從最左和最右的數中選擇乙個。玩家a先拿,玩家b再拿,兩人交替拿走所有的數字。兩人都力爭自己拿到的數的總和比對方多。請返回最後獲勝者的分數。例如 5,2,3,4 玩家a先拿,當前他只能拿走5或者4。如果玩家a拿走5,那麼剩下2,3,...
LeeCode 1832 找出遊戲的獲勝者
題目描述 共有 n 名小夥伴一起做遊戲。小夥伴圍成一圈,按順時針順序從1到n編號。確切地說,從第 i 名小夥伴順時針移動一位會到達第 i 1 名小夥伴的位置,其中 1 i n,從第 n 名小夥伴順時針移動一位會回到第 1 名小夥伴的位置。遊戲遵頊如下規則 從第 1 名小夥伴所在位置開始 沿著順時針方...