LeetCode 794. 有效的井字游戏(分类讨论)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 794. 有效的井字游戏(分类讨论)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
用字符串?dāng)?shù)組作為井字游戲的游戲板 board。當(dāng)且僅當(dāng)在井字游戲過程中,玩家有可能將字符放置成游戲板所顯示的狀態(tài)時(shí),才返回 true。
該游戲板是一個(gè) 3 x 3 數(shù)組,由字符 " ","X" 和 "O" 組成。字符 " " 代表一個(gè)空位。
以下是井字游戲的規(guī)則:
- 玩家輪流將字符放入空位(" ")中。
- 第一個(gè)玩家總是放字符 “X”,且第二個(gè)玩家總是放字符 “O”。
- “X” 和 “O” 只允許放置在空位中,不允許對已放有字符的位置進(jìn)行填充。
- 當(dāng)有 3 個(gè)相同(且非空)的字符填充任何行、列或對角線時(shí),游戲結(jié)束。
- 當(dāng)所有位置非空時(shí),也算為游戲結(jié)束。
- 如果游戲結(jié)束,玩家不允許再放置字符。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-tic-tac-toe-state
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
class Solution { public:bool validTicTacToe(vector<string>& board) {int X = 0, O = 0, winX = 0, winO = 0;for(int i = 0; i < 3; ++i)for(int j = 0; j < 3; ++j){if(board[i][j]=='X') X++;else if(board[i][j]=='O') O++;}if(X < O || X > O+1) return false;//個(gè)數(shù)差不對for(int i = 0; i < 3; ++i){ //3行if(board[i][0]==board[i][1] && board[i][1]==board[i][2]){if(board[i][0] == 'X')winX++;else if(board[i][0] == 'O')winO++;}}for(int i = 0; i < 3; ++i){ //3列if(board[0][i]==board[1][i] && board[1][i]==board[2][i]){if(board[0][i] == 'X')winX++;else if(board[0][i] == 'O')winO++;}}if(board[0][0]==board[1][1] && board[1][1]==board[2][2]){ //對角線1if(board[0][0] == 'X')winX++;else if(board[0][0] == 'O')winO++;}if(board[2][0]==board[1][1] && board[1][1]==board[0][2]){ //對角線2if(board[2][0] == 'X')winX++;else if(board[2][0] == 'O')winO++;}if(X == O && winX)//先手贏,必有X == O+1return false;if(X != O && winO)//后手贏,必有X == Oreturn false;return winX+winO<=1 || (winX==2 && winO==0);// 最多一人贏 或者 先手有2個(gè)可以贏的情況} };0 ms 8.5 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關(guān)注我的公眾號(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 794. 有效的井字游戏(分类讨论)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1614. 括号的最大
- 下一篇: LeetCode MySQL 1285.