美文网首页
有效的井字游戏

有效的井字游戏

作者: xialu | 来源:发表于2021-12-09 23:09 被阅读0次

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-tic-tac-toe-state

题目描述:

给你一个字符串数组 board 表示井字游戏的棋盘。当且仅当在井字游戏过程中,棋盘有可能达到 board 所显示的状态时,才返回 true 。
井字游戏的棋盘是一个 3 x 3 数组,由字符 ' ','X' 和 'O' 组成。字符 ' ' 代表一个空位。
以下是井字游戏的规则:
玩家轮流将字符放入空位(' ')中。
玩家 1 总是放字符 'X' ,而玩家 2 总是放字符 'O' 。
'X' 和 'O' 只允许放置在空位中,不允许对已放有字符的位置进行填充。
当有 3 个相同(且非空)的字符填充任何行、列或对角线时,游戏结束。
当所有位置非空时,也算为游戏结束。
如果游戏结束,玩家不允许再放置字符。

示例 1:

输入:board = ["O "," "," "]
输出:false
解释:玩家 1 总是放字符 "X" 。

示例 2:

输入:board = ["XOX"," X "," "]
输出:false
解释:玩家应该轮流放字符。

示例 3:

输入:board = ["XXX"," ","OOO"]
输出:false

Example 4:

输入:board = ["XOX","O O","XOX"]
输出:true

代码实现:
class Solution {
    public boolean validTicTacToe(String[] board) {
        char[][] cs = new char[3][3];
        int x = 0, o = 0;
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                char c = board[i].charAt(j);
                if (c == 'X') x++;
                else if (c == 'O') o++;
                cs[i][j] = c;
            }
        }
        boolean a = check(cs, 'X'), b = check(cs, 'O');
        if (o > x || x - o > 1) return false;
        if (a && x <= o) return false;        
        if (b && o != x) return false;
        if (a && b) return false;
        return true;
    }
    boolean check(char[][] cs, char c) {
        for (int i = 0; i < 3; i++) {
            if (cs[i][0] == c && cs[i][1] == c && cs[i][2] == c) return true;
            if (cs[0][i] == c && cs[1][i] == c && cs[2][i] == c) return true;
        }
        boolean a = true, b = true;
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (i == j) a &= cs[i][j] == c;
                if (i + j == 2) b &= cs[i][j] == c;
            }
        }
        return a || b;
    }
}

相关文章

  • 有效的井字游戏

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-...

  • 794. 有效的井字游戏(Python)

    难度:★★★☆☆类型:字符串方法:逻辑 力扣链接请移步本题传送门[https://leetcode-cn.com/...

  • 「算法」794. 有效的井字游戏

    用字符串数组作为井字游戏的游戏板 board。当且仅当在井字游戏过程中,玩家有可能将字符放置成游戏板所显示的状态时...

  • 井字游戏

    设计一个算法,判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘,由字符" ",“X"和"O"组成,其中...

  • 玩井字游戏

    晚上带孩子们玩了井字游戏,这可是一个有魔力的游戏,让孩子们玩得欲罢不能,竟然上瘾了。 井字游戏是...

  • 井字游戏的魔力

    前天晚上带孩子们玩了井字游戏,老大老二玩上瘾了,这在我的预料之中。前天晚上玩了几局后,到点该洗漱了,我就催...

  • C++实现的基于α-β剪枝算法的井字棋游戏

    一、井字棋游戏规则 “井字棋”游戏(又叫“三子棋”),是一款十分经典的益智小游戏,操作简单,娱乐性强。两个玩家,一...

  • 多维数组怎么学?看这一篇就够了,带你在游戏中学习。

    tic-tac-toe 游戏 (井字棋游戏) 大家小时候应该都玩过井字棋吧,下课之余和同学来上一把,是多么开心。今...

  • React井字旗游戏

    教程: 井字旗游戏教程链接 教程中对于Array.prototype.slice的阐述有问题(链接),根据mdn中...

  • 16.04. 井字游戏

    【Description】设计一个算法,判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘,由字符" "...

网友评论

      本文标题:有效的井字游戏

      本文链接:https://www.haomeiwen.com/subject/lfvqfrtx.html