zgjja


私信TA

用户名:zgjja

访问量:12024

签 名:

X_X

等  级
排  名 147
经  验 7313
参赛次数 0
文章发表 71
年  龄 0
在职情况 学生
学  校
专  业 X_X

  自我简介:

解题思路:
DFS


注意事项:
    代码改进:

        1.dfs内的赋值部分分开写可以缩短运行时间;

        2.这里判断王的坐标的方法比较笨,浪费了很多空间。

参考代码:

def dfs(row=0):
    global r, col_not_occupied, d_1, d_2, cnt
    cnt += 1 if row == r else 0

    for col in range(r):
        if col_not_occupied[col] and d_1[row - col] and d_2[row + col] and \
                map_[row][col]:
                    col_not_occupied[col], d_1[row - col], d_2[row + col] = [False for _ in range(3)]
                    dfs(row + 1)
                    col_not_occupied[col], d_1[row - col], d_2[row + col] = [True for _ in range(3)]


r, x, y = map(int, input().split())
cnt = 0
map_ = [[1 for _ in range(r)] for _ in range(r)]
col_not_occupied = [True for _ in range(r)]
d_1, d_2 = [[True for _ in range(2 * r - 1)] for _ in range(2)]
direction = [[0, 0], [1, 0], [-1, 0], [0, 1], [0, -1], [1, 1], [-1, -1], [1, -1], [-1, 1]]
for d in direction:
    if 0 <= x + d[0] - 1 < r and 0 <= y + d[1] - 1 < r:
        map_[x + d[0] - 1][y + d[1] - 1] = 0
dfs()
print(cnt)


 

0.0分

1 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

  • «
  • »