关注
第二题直接搜索79% import sys
def dfs(board, x, y, last_dir, count, cls):
if count == 5:
return True
if not last_dir:
for each_dir in DIR:
temp_x = x + each_dir[0]
temp_y = y + each_dir[1]
if 0 <= temp_x < N and 0 <= temp_y < N and board[temp_x][temp_y] == cls:
rvt = dfs(board, temp_x, temp_y, each_dir, count + 1, cls)
if rvt:
return True
else:
temp_x = x + last_dir[0]
temp_y = y + last_dir[1]
if 0 <= temp_x < N and 0 <= temp_y < N and board[temp_x][temp_y] == cls:
rvt = dfs(board, temp_x, temp_y, last_dir, count + 1, cls)
if rvt:
return True
return False
if __name__ == '__main__':
N = 15
DIR = [[1, 0], [0, 1], [-1, 1], [1, 1]]
chess_board = []
for i in range(N):
temp = sys.stdin.readline().strip()
chess_board.append(temp)
count_white, count_black = 0, 0
for i in range(N):
count_white += chess_board[i].count('W')
count_black += chess_board[i].count('B')
if count_white > count_black or count_black > count_white + 1:
print("invalid board")
else:
rvt_w, rvt_b = False, False
for i in range(N):
if rvt_w:
break
for j in range(N):
if chess_board[i][j] == 'W':
rvt_w = dfs(chess_board, i, j, None, 1, 'W')
if rvt_w:
break
for i in range(N):
if rvt_b:
break
for j in range(N):
if chess_board[i][j] == 'B':
rvt_b = dfs(chess_board, i, j, None, 1, 'B')
if rvt_b:
break
if not rvt_w and not rvt_b:
if count_white + count_black == N * N:
print("draw")
else:
print("not finished")
elif rvt_w:
if count_white == count_white:
print("white win")
else:
print("invalid board")
elif rvt_b:
if count_black > count_white:
print("black win")
else:
print("invalid board")
查看原帖
2 评论
相关推荐
08-15 09:45
武汉轻工大学 产品运营 
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 拿到offer之后,可以做些什么 #
20025次浏览 156人参与
# 硬件开发岗知多少 #
15376次浏览 121人参与
# 乐堡互娱校招 #
16154次浏览 224人参与
# 入职跑路最快的一次经历 #
20500次浏览 144人参与
# ___岗狗都不干,我干! #
9416次浏览 88人参与
# 校招谈薪技巧 #
32960次浏览 468人参与
# 携程求职进展汇总 #
606468次浏览 4505人参与
# 材料转码还有必要吗? #
27137次浏览 143人参与
# 面试时间长是好事吗? #
49658次浏览 378人参与
# 你会为了工作牺牲生活吗? #
39884次浏览 298人参与
# 小米编程考试 #
6245次浏览 97人参与
# 国企秋招,你投了吗? #
6749次浏览 63人参与
# 你在职场中沾染到的“坏”习惯 #
7553次浏览 82人参与
# 华为工作体验 #
227422次浏览 1274人参与
# 如何看待应届生身份? #
166434次浏览 1891人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
36910次浏览 497人参与
# 材料人的华为红黑体验 #
31778次浏览 178人参与
# 中兴工作体验 #
34769次浏览 298人参与
# 提名点击就挂的公司 #
45588次浏览 231人参与
# 面试被问第一学历差时该怎么回答 #
184392次浏览 1463人参与
# HR问:你期望的薪资是多少?如何回答 #
59401次浏览 617人参与