leetcode1275. 找出井字棋的获胜者

题目描述:

题解:

<1>初始化一个3*3的数组,初始化为0

<2>根据输入的moves,更新数组

<3>判断数组最终状态下是否达到A或B获胜的条件,如果没有胜出,则判断棋盘是否还有空位

def tictactoe(self, moves):
    board  = [[0 for i in range(3)]for i in range(3)]
    for i in range(len(moves)):
        if i%2==0:
            board[moves[i][0]][moves[i][1]] = "x"
        else:
            board[moves[i][0]][moves[i][1]] = "o"
    print(board)
    flag1 = 0
    flag2 = 0
    empty = 0
    for i in range(3):
        for j in range(3):
            if board[i][j]==0:
                empty = empty+1

    if board[0][0]=="x" and board[1][1]=="x" and board[2][2]=="x":
        flag1 = 1
    if board[0][0]=="o" and board[1][1]=="o" and board[2][2]=="o":
        flag2 = 1
    if board[0][2]=="x" and board[1][1]=="x" and board[2][0]=="x":
        flag1 = 1
    if board[0][2]=="o" and board[1][1]=="o" and board[2][0]=="o":
        flag2 = 1
    if board[0][0]==board[0][1]==board[0][2]=="x":
        flag1 = 1
    if board[0][0]==board[0][1]==board[0][2]=="o":
        flag2 = 1
    if board[1][0]==board[1][1]==board[1][2]=="x":
        flag1 = 1
    if board[1][0]==board[1][1]==board[1][2]=="o":
        flag2 = 1
    if board[2][0]==board[2][1]==board[2][2]=="x":
        flag1 = 1
    if board[2][0]==board[2][1]==board[2][2]=="o":
        flag2 = 1
    if board[0][0] == board[1][0] == board[2][0] == "x":
        flag1 = 1
    if board[0][0] == board[1][0] == board[2][0] == "o":
        flag2=1
    if board[0][1] == board[1][1] == board[2][1] == "x":
        flag1 = 1
    if board[0][1] == board[1][1] == board[2][1] == "o":
        flag2=1
    if board[0][2] == board[1][2] == board[2][2] == "x":
        flag1 = 1
    if board[0][2] == board[1][2] == board[2][2] == "o":
        flag2=1
    if flag1==1:
        return "A"
    if flag2==1:
        return "B"
    if flag1 == 0 and flag2==0:
        if empty==0:
            return "Draw"
        else:
            return "Pending"

参考https://blog.csdn.net/qq_17550379/article/details/103345013

判断部分可以利用board[i][0]和board[0][i]简化

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值